1、#include <reg52.h>
2、#define uchar unsigned char
3、#define uint unsigned int
4、sbit LED = P0^0uchar T_Count = 0void main(){TMOD = 0x01TH0 = (65535-50000)/256TL0 = (65535-50000)%256IE = 0x82TR0 = 1while(1)}
5、void LED_Flash() interrupt 1{TH0 = (65535-50000)/256TL0 = (65535-50000)%256if(++T_Count == 20){LED = !LEDT_Count = 0}}
6、这个程序是1秒钟LED灯会亮与灭显示。
1单片机,拥有两个定时器,用来中断计数,分别是T0和T1。而52单片机和51单片机的定时器是一样的,只是52比51多了一个定时器/计数器T2,它们的设置都大同小异。
用定时器T0来完成那么我令T0的溢出时间为200us
那么T0的初值为56
1(s)=200*250*2(us)
下面是程序
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP CTC0
ORG 100H
MIAN:
MOV SP,#5FH
MOV R7,#250软件计数第一级
MOV R6,#2软件计数第二级
MOV TL0,#56送初值
MOV TH0,#56
ANL TOMD,#0F0HTOMD高4位不变,T1工作方式不
变
ORL TMOD,#02H定义T0工作方式
SETB ET0
SETB TR0
SJMP $
CTC0:
PUSH PSW保护PSW
DJNZ R7, EXIT软件计数
MOV R7,#250 重装初值,下同
DJNZ R6,EXIT
MOV R6,#2
EXIT:
POP PSW
RETI
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)