用的是16f877a
#include<p16f877a.inc> org 00 nop movlw 05h clrf 01h movwf 30h bsf 0bh,2 bcf 0bh,2 clrf 01h bsf 03h,5 movlw 0d7h movwf 81h bcf 03h,5 clrf 01h bcf 0bh,2 end
这是源程序 软件模拟时,tmr0按“1”递增,溢出则中断标志置“1”,进入处理程序后,可以将其清零。
但,icd2在线调试是连接、编程都很正常 但是,执行 bcf 03h,5 clrf 01h bcf 0bh,2 end 执行 bcf 03h,5后 tmr0中断标志位T0IF立即置1,而且执行 clrf 01h后 tmr0无法清零,执行 bcf 0bh,2后 中断标志位也无法清零,而且tmr0的递增数值也不相同,时大时小,即使在相同语句,每次运行时的递增数值也不相同。
org 00 nop movlw 05h clrf 01h movwf 30h 之后的两条语句则可以对t0if进行置1、清零的操作
请指点问题到底出现在什么地方??? |