单片机程序的问题

来源:百度知道 编辑:UC知道 时间:2024/05/08 00:24:01
初学51单片机,从资料上摘抄了一个程序如下:
(T1接入周期为500ms的方波。)

ORG 0000H ;
AJMP START ;
ORG 001BH ;
AJMP TIMER1 ;
ORG 0030H ;
START:MOV SP,#5FH ;
MOV TMOD,#01010000B ;T1计数,工作方式1
MOV TH1,#0FFH ;
MOV TL1,#0FAH ;
SETB EA ;
SETB ET1 ;
SETB TR1 ;
AJMP $ ;(1)
TIMER1:PUSH ACC ;
PUSH PSW ;
CPL P1.0 ;
MOV TH1,#0FFH ;
MOV TL1,#0FAH ;
POP PSW ;
POP ACC ;
RETI ;
END 。(2)

(1)AJMP $;我总觉得这句用得不好,会影响计数的准确性,我觉得应该写一个独立的循环,如LOOP:AJMP LOOP;
或者说,我觉得不管怎样写,单片机都不能完成非常精确的计时,都会产生指令周期的整数倍误差。
(2)程序应该以英文状态下的句号“.”还是中文句号“。”结尾?

(1)AJMP $;即是LOOP:AJMP LOOP;影响记数周期的是中断处理程序TIMER1里的语句的多少,跟AJMP $没太大关系。
(2)汇编结束语句没有.也没有。

jmp $通用