打印

有段用MICROCHIP的PIC10F200的子程序,有问题请教,先谢谢呀!

[复制链接]
2861|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WOAILYMD|  楼主 | 2009-2-3 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    #include p10f200.inc

;    __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
    __CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC


#define    _Z        STATUS,2


delay1    equ        0x10
delay2    equ        0x11
delay3    equ        0x12
delays    equ        0x13

        

    org    0x00

    movwf    OSCCAL

start:
    movlw    b'10000111'        ; Disable T0CKI input function and no watchdog precscaler
    option

……




wait1second:
    movlw    0x01
    movwf    delays
waitloopmain:
    movlw    0x32
    movwf    delay1
    movlw    0xFD
    movwf    delay2
    movlw    0x5
    movwf    delay3
waitloop:
    decfsz    delay1,f
    goto    waitloop
    decfsz    delay2,f
    goto    waitloop
    decfsz    delay3,f
    goto    waitloop
    decfsz    delays,f
    goto    waitloopmain
    retlw    0x00


    end


上述程序里的产生1s延时的子程序有以下问题请教:

1、该子程序能产生1s延时吗?
请列出计算式
注:PIC10F200是4MHz,单指令1us

2、decfsz    delays,f
上面的f是什么意思?

相关帖子

沙发
lyjian| | 2009-2-3 14:25 | 只看该作者

大概1S

wait1second:
    movlw    0x01    ;1
    movwf    delays    ;1
waitloopmain:
    movlw    0x32    ;1  (50)
    movwf    delay1    ;1
    movlw    0xFD    ;1  (253)
    movwf    delay2    ;1
    movlw    0x5    ;1  (5)
    movwf    delay3    ;1
waitloop:
    decfsz    delay1,f    ;1 or 2
    goto    waitloop    ;2
    decfsz    delay2,f    ;1 or 2
    goto    waitloop    ;2
    decfsz    delay3,f    ;1 or 2
    goto    waitloop    ;2
    decfsz    delays,f    ;1 or 2
    goto    waitloopmain    ;2
    retlw    0x00    ;2

(((1+2)*256-1+(1+2))*256-1+(1+2))*4+
(1+2)*50-1+((1+2)*256-1(1+2))*253-1+
10=982191uS
*******************************************
2、decfsz    delays,f
上面的f是什么意思?

f=1(头文件中有定义)

使用特权

评论回复
板凳
WOAILYMD|  楼主 | 2009-2-3 17:46 | 只看该作者

多谢楼上的耐心推导!

通过你的算式,才注意到DATASHEET里强调算术操作是以补码方式来进行的,依此来考虑“0-1”=1111 1111 才理解了你公式里的256的由来。

修正下,好像应为:
(((1+2)*256-1+(1+2))*256-1+(1+2))*4+2+
(1+2)*49+2+((1+2)*256-1+(1+2))*252+2+
10=982691uS

再次感谢楼上!

使用特权

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

本版积分规则

28

主题

203

帖子

0

粉丝