2008-11-04
ORG 0000H
LJMP MAIN
ORG 000BH; 单片机中断程序入口地址
AJMP ZHDUAN
CJNE A,R7,RED; 判断是否进入红灯亮程序
DJNZ R6,GREEEN; 红灯亮条件不满足,判断是否进入绿灯亮程序
LJMP YELLOW; 绿灯亮条件不满足,判断是否进入黄灯亮程序
ORG 0100H
RED:MOV SP,#60H; 设置堆栈指针
MOV A,#0C9H; 200*0.1ms=20s
MOV R7,#00H
INC R7
SETB P1.0
CLR P1.1
CLR P1.2
AJMP DINGSHI
ORG 0200H
GREEN:MOV R6,#0C9H; 绿灯亮子程序入口 也是 200*0.1ms=20s
SETB P1.1
CLR P1.2
CLR P1.0
DINGSHI:MOV TMOD,#01H; 设置T0工作在方式1
MOY TL0,#0B0H; 计数初值3CB0=15536 50000*2uS=0.1ms
MOV TH0,#3CH;
KAIQI:SETB TR0; 开启中断
SETB ETO
SETB EA
HERE:AJMP HERE; 等待中断的到来
ZHDUAN:MOV TL0,#0B0H; 感觉中断子程序的内容没用
MOV TH0,#3CH
CLR TR0
RET
ORG 0300H
YELLOW:SETB P1.2; 黄灯亮子程序入口
CLR P1.1
CLR P1.0
MOV R3,#1EH; 0.1秒
BBB:MOV R4,#0FAH; 延
AAA:MOV R5,#0C8H; 时
DENGDAI:DJNZ R5,DENGDAI; 子
DJNZ R4,AAA; 程
DJNZ R3,BBB; 序
LJMP RED;
END
程序结束!!!!!!!
评论1
楼主 2008/11/4 19:10:38
简单到只要懂一点单片就能看懂,这个也是学习单片机的入门教程,学习单片机最重要的是自己动手,搞出一个小系统来,可以对这个的开发,能更好的学习单片,其实单片就是要边动手边学习的,不然你是学不会单片机的..