打印

求助:谁能帮我啊,急啊

[复制链接]
1533|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
semwinliu|  楼主 | 2008-7-8 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, go, OPA, RF, ST
以下程序是在16F72上的.但现在要用在16F677上,不只可行吗?怎么改啊?我只看得懂一点汇编(51的),这个看不懂啊.请教了......
  ;------------------------I/O CONFIG--------------------------
;     start key  <--------------------------->RA0    (I)
;      fail  lamp<--------------------------->RC0    (0)
;   pass   lamp<--------------------------->RC1    (0)
;     power     <--------------------------->RC3    (0)
;    LED         <--------------------------->RB      (I)
;------------------------Systerm CONFIG----------------------
;     XT=4Mhz,Master Reset=Enable
;-----------------------------------------------------------------
    list    p=16f72
    #include    "p16f72.inc"
    
    cnt0    equ    20h
    cnt1    equ    21h
    cnt2    equ    22h
    cnt3    equ    23h
    temp    equ    25h
    
    org    00h
    nop
    goto    main
main:
    banksel    ADCON1
    movlw    0x06
    movwf    ADCON1
    banksel    TRISA
    movlw    0x01
    movwf    TRISA
    movlw    0x0ff
    movwf    TRISB
    movlw    0x00
    movwf    TRISC
    movlw    0x00
    movwf    PIE1
    banksel    PORTA
    clrf    PORTA
    clrf    PORTB
    clrf    PORTC
    movlw    0x00
    movwf    INTCON
    movlw    0x00
    movwf    PIR1
    movlw    0x30
    movwf    T1CON
    movlw    0x00
    movwf    TMR1L
    movlw    0x00
    movwf    TMR1H
    movlw    0x0f0
    movwf    PORTC
wait:
    btfsc    PORTA,0
    goto    $-1
    call    delay
    btfsc    PORTA,0
    goto    wait
    clrf    PORTC    
    bsf        PORTC,3
    clrf    PIR1
    call    delay    
loopa:
    clrf    TMR1L
    clrf    TMR1H
    movlw    0x0ff
    movwf    PORTB
    call    delay
    bsf        T1CON,TMR1ON
loopa00:
    clrf    TMR1L
    clrf    TMR1H
loopa0:
    btfss    PORTB,0
    goto    loopa10
    btfsc    PIR1,0
    goto    stop
    goto    loopa0
loopa10:
    clrf    TMR1L
    clrf    TMR1H
loopa1:
    btfss    PORTB,1
    goto    loopa20
    btfsc    PIR1,0
    goto    stop
    goto    loopa1
loopa20:
    clrf    TMR1L
    clrf    TMR1H
loopa2:
    btfss    PORTB,2
    goto    loopa30
    btfsc    PIR1,0
    goto    stop
    goto    loopa2
loopa30:
    clrf    TMR1L
    clrf    TMR1H
loopa3
    btfss    PORTB,3
    goto    loopa40
    btfsc    PIR1,0
    goto    stop
    goto    loopa3
loopa40:
    clrf    TMR1L
    clrf    TMR1H
loopa4:
    btfss    PORTB,4
    goto    loopa50
    btfsc    PIR1,0
    goto    stop
    goto    loopa4
loopa50:
    clrf    TMR1L
    clrf    TMR1H
loopa5:
    btfss    PORTB,5
    goto    loopa60
    btfsc    PIR1,0
    goto    stop
    goto    loopa5
loopa60:
    clrf    TMR1L
    clrf    TMR1H
loopa6
    btfss    PORTB,6
    goto    loopa70
    btfsc    PIR1,0
    goto    stop
    goto    loopa6
loopa70:
    clrf    TMR1L
    clrf    TMR1H
loopa7:
    btfss    PORTB,7
    goto    pass
    btfsc    PIR1,0
    goto    stop
    goto    loopa7
stop:
    movlw    0x0f9
    movwf    PORTC
    bcf        T1CON,0
    call    delay2s
    clrf    PORTC
    goto    wait
pass:
    movlw    0x0fA
    movwf    PORTC
    bcf        T1CON,0
    call    delay2s
    clrf    PORTC
    goto    wait
delay:
    movlw    0x0c8
    movwf    cnt1
lp1:
    movlw    0x0FA
    movwf    cnt0
lp0:
    nop
    decfsz    cnt0
    goto    lp0
    decfsz    cnt1
    goto    lp1
    retlw   0

delay2s:
     movlw    0x05
     movwf    cnt3
     movlw    250
     movwf    cnt2
     movwf    cnt1
loop3:
     clrf    TMR1H
    clrf    TMR1L
    decfsz    cnt1,f
    goto    loop3
    decfsz    cnt2,f
    goto    loop3
    decfsz    cnt3,f
    goto    loop3
    bcf        PORTC,3
    retlw    0

end

相关帖子

沙发
semwinliu|  楼主 | 2008-7-8 15:25 | 只看该作者

怎么没人里我啊

高手指点下了,再次谢谢了...

使用特权

评论回复
板凳
foxfox| | 2008-7-8 16:37 | 只看该作者

没问题的.

这段代码的意思是:
while(1)
{
  if(start被按下)
  {
    if(PORTB任意脚有持续的time1宽度的高电平)
    {
        输出fail;
        延时2s;
    }
    else
    {
       输出pass;
       延时2s;
    }
  }
}

使用特权

评论回复
地板
古道热肠| | 2008-7-8 16:38 | 只看该作者

看不懂看书

有些本领是给逼出来的,人天生都有懒性,其实人的潜能是很大的.

使用特权

评论回复
5
semwinliu|  楼主 | 2008-7-8 17:03 | 只看该作者

感谢foxfox

感谢foxfox和古道热肠两位!这是我一个产品的测试程序.很多指令和51的不同,不知道什么意思.学习的话时间就来不及了.着两天要用.可不可以指点下我要改的话怎么改啊?先谢了.

使用特权

评论回复
6
foxfox| | 2008-7-8 17:21 | 只看该作者

你想怎么改?

使用特权

评论回复
7
semwinliu|  楼主 | 2008-7-8 19:33 | 只看该作者

多谢

非常感谢!
    我只是想把此程序用在16F677上.F677 RB没有8个I/O口,此程序输入为LED(8路),但677有8个RC端,我是想把"PORTB,0-PORTB,7"换成"PORTC,0-PORTC,7"
但想来不回那么简单,就不感动手了.foxfox兄请指点一二,兄弟我感激啊...

使用特权

评论回复
8
foxfox| | 2008-7-8 21:48 | 只看该作者

re

 既然这样就把 
 fail  lamp<--------------------------->RC0    (0)
 pass   lamp<--------------------------->RC1    (0)
 power     <--------------------------->RC3    (0)
 移到为 
          fail  lamp<--------------------------->RB4    (0)
          pass   lamp<--------------------------->RB5    (0)
          power     <--------------------------->RB7   (0)

估计两天你也搞不定,来应急一下

把上面的代码做以下改动
  一, 所有 "PORTC"替换为 "P-O-R-T-C"
       所有 "TRISC"替换为  "T-R-I-S-C"
       
  二,所有 "PORTB"替换为 "PORTC"
      所有 "TRISB"替换为  "TRISC"

  三,然后再
      所有 "P-O-R-T-C"替换为 "PORTB"
      所有 "T-R-I-S-C"替换为  "TRISB"
  四,   
    stop:
       movlw    0x0f9
    改成 
    stop:
       movlw    0x09f
 五,
    pass:
       movlw    0x0fA
   改成
   pass:
       movlw    0x0af

     

使用特权

评论回复
9
semwinliu|  楼主 | 2008-7-9 08:07 | 只看该作者

非常感谢

真是雪中送碳啊,昨晚我老大还在追问呢.明天要生产了.我这就去烧了来试...

使用特权

评论回复
10
semwinliu|  楼主 | 2008-7-10 11:19 | 只看该作者

谢谢啊

成了!foxfox真高人也!!!!
向你学习..

使用特权

评论回复
11
救火车| | 2008-7-10 11:28 | 只看该作者

看来用汇编的人还很多呀。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

78

帖子

0

粉丝