话不多说,先说目的:使用定时器的查询方式来反转LED。然后上代码:
ORG 0000H
MOV TMOD,#00H
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
WhatchTf1:
JBC TF1,T1Overflow
SJMP WhatchTf1
T1Overflow:
CPL P1.0
SJMP WhatchTf1
END
接着是分析程序:
ORG 0000H
MOV TMOD,#00H ;
TMOD 即timer mode,定时器工作方式控制寄存器,设置他的工作方式16位自动重装,算了,这个还是不说那么具体了,感觉这种东西去查书或者数据手册都能查到。这里说说我的看法:单片机,就是对相应的寄存器放入相应的数,然后让他按相应的工作方式工作。就是这样。所以以后配置方面的东西我都不会仔细讲
MOV TH1,#0ECH ;设置定时器的初值,EC78,这个自己理解一下就知道这是5ms延时,12M晶振
MOV TL1,#78H
SETB TR1 ;开启定时器
WhatchTf1:
JBC TF1,T1Overflow ;查询tf1,jbc就是看tf1是为1,若为1,则跳到t1overflow,同时清零tf1让它继续定时,这个在定时器中经常用到。当定时器定时结束tf1自动置一,由软件清零
SJMP WhatchTf1 ;如果没有溢出则一直在查询tf1
T1Overflow: ;如果定时结束则来实现相应的功能
CPL P1.0 ;取反LEDp1.1
SJMP WhatchTf1 ; 做完自己想要做的事情之后又跳到去查询tf1
END
看完程序后记得理清思路,不然很懵逼就没用了,这种东西看多两遍就没问题了
相关文章