资源描述:
《第四章15定时计数器t0作定时应用技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.实验任务用AT89S51单片机的定时/计数器TO产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,H动从0开始。硕件电路如下图所示2・电路原理图gnd[10K234567810121314151617■]0uFcn导6f-囹12oAP1.0P0.0/AD0P1.1P0.1/AD1Pl.2P0.2/AD2Pl.3P0.3/AD3Pl.4P0.4/AD4Pl.5P0.5/AD5Pl.6P0.6/AD6Pl.7P0.7/AD7ALEPSENP3.0/RXDP2.7/A15P3.1/TXDP2
2、.6/A14P3.2/INT0P2.5XA13P3.3/INT1P2.4/A12P3.4/T0P2.3/AUP3.5)T1P2.2XA10P3.6XWRP2.1/A9P3.7/RDP2.0/A8貝m13938P0137P0236P0335P0434P0533P0632P07302928P2727P2626P2525P2424P2323P2222P2121P20P00P01POOP05P06P21P20P25P26COoU2LED8_1OU4QOOQSSOSSQOOQSSOSSCD6U3LEDS1P04P03P02P0
3、7P24P23P22P2712MHGNDr~C3R2220AT89S51R3220图4.15.13.系统板上硬件连线(1・把“单片机系统”区域屮的P0.0/AD0-P().7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域小的任一个a-h端口上;要求:P0.0/AD0对应着a,P0」/ADl对应着b,……,P0.7/AD7对应着h°(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对
4、应着b,……,P2.7/A15对应着h。4・程序设计内容AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。现在我们选择16位定时工作方式,对于TO來说,最大定时也只有65536us,即65.536ms,无法达到我们所需耍的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取TO的最人定时为50ms,即要定
5、时1秒需要经过20次的50ms的定时。对于这20次我们就可以采用软件的方法來统计了。因此,我们设定TMOD=00000001B,即TMOD=01H卞面我们要给TO定时/计数器的THO,TLO装入预置初值,通过下面的公式可以计算出TH()=(216-50000)/256TLO=(2,6-50000)MOD256当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TFO标志位,如果TFO=1表示定时时间已到。5.程序框图图4.15.26.汇编源程序(查询法)SECONDEQU
6、30H;EQU伪指令给一个表达式或字符串起名TCOUNTEQU31HORG00HSTART:MOVSECOND,#00HMOVTCOUNT,#00HMOVTMOD,#01HMOVTH0.#(65536-50000)/256MOVTLO,#(65536-50000)MOD256SETBTRODISP:MOVA,SECONDMOVE,#10DIVABMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP0,AMOVA,BMOVCA,@A+DPTRMOVP2,AWAIT:JNBTF0,WAITCLRTFOMOVTH
7、0,#(65536-50000)/256MOVTLO,#(65536-50000)MOD256INCTCOUNTMOVACCOUNTCJNEA,#20,NEXTMOVTCOUNT,#00HINCSECONDMOVA,SECONDCJNEA,#60,NEXMOVSECOND,#00HNEX:LJMPDISPNEXT:LJMPWAITTABLE:DB3FH,06H,5BH,4FH,66H.6DH,7DH,07H,7FH,6FHEND7・C语言源程序(查询法)8.includeunsignedchar
8、codedispcode[]={0x3f0x06,0x5b?0x4f,0x66,0x6(1,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsignedcharsecond;unsignedchartcount;voidmain(void){TMOD=0x01;//特殊功能寄存