定时器计数器控制交通灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORG 0000H
RESET:LJMP MAIN ;上电复位入口
ORG 000BH ;定时器计数器零入口地址
LJMP IT0P
ORG 001BH ;定时器计数器1入口地址
LJMP IT1P
ORG 0100H
MAIN: MOV SP,#60H;修改堆栈指针
MOV B,#0AH ;循环次数10次
SETB EA ;开中断
SETB PT1 ;定时器计数器1为高优先级
SETB ET1 ;允许定时器计数器1中断
SETB ET0 ;允许定时器计数器0中断
MOV TMOD,#51H ;设T1工作在计数模式方式1,设T0工作在定时模式方式1 0101 0001 MOV TL0,#0B0H ;赋初值15535,定时100MS
MOV TH0,#3CH
MOV TL1,#0FFH ;赋初值FFFFH
MOV TH1,#0FFH
SETB TR0 ;启动T0,T1
SETB TR1
MOV A,#3CH ;东西红,南北绿
MOV P1,A
SJMP $ ;等待中断
IT0P: MOV TL0,#0B0H ;T0中断服务子程序,给T0重装初值
MOV TH0,#3CH
DJNZ B,LOOP ;B减1,不为零跳转
CPL A ;1S定时时间到,灯的状态取反,东西绿,南北红
MOV P1,A
MOV B,#0AH ;重新装入值,循环10次,程序不断循环执行
LOOP: RETI ;
IT1P:
PUSH PSW ;保护现场
PUSH Acc
MOV A,#0FH ;红灯全亮
MOV P1,A
LCALL DEL
POP Acc
POP PSW
MOV TL1,#0FFH ;赋初值FFFFH
MOV TH1,#0FFH
RETI ;退出中断服务子程序
DEL:MOV R7,#0FFH ;延时程序
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL RET
END