单片机交通灯汇编代码.docx
- 文档编号:23868543
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:14
- 大小:16.68KB
单片机交通灯汇编代码.docx
《单片机交通灯汇编代码.docx》由会员分享,可在线阅读,更多相关《单片机交通灯汇编代码.docx(14页珍藏版)》请在冰豆网上搜索。
单片机交通灯汇编代码
1、倒计时交通灯
源程序:
CMD_8279EQU0BF01
DATA_8279EQU0BF00
ORGOOOOH
LJMPMAIN
ORG000BH
LJMPINT_T0
ORG0040H
MAIN:
MOVSP,#50H
LCALLINIT8279
MOV30H,#16
MOV31H,#16
MOV20H,#0
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
CLRTR0
MOV40H,#00H
;主循环用于检测有没有键按下,并取键值
STAR:
LCALLDISPLAY
STAR0:
LCALLSCAN_KEY
JNCSTAR0
STAR1:
LCALLKEY_NUM
CJNEA,#0AH,NEQ
MOVA,30H
SWAPA
ADDA,31H
MOV50H,A
LCALLJIAOTONG
NEQ:
JNCKEY_B
SJMPDATAKEY
KEY_B:
CJNEA,#0BH,STAR0
SETB20H.1
LJMPSTAR
DATAKEY:
MOV30H,31H
MOV31H,A
LJMPSTAR
;交通灯控制程序
JIAOTONG:
MOVP1,#7EH
LCALLDISPLAY30S
JB20H.1,MAIN
MOVP1,#0BDH
LCALLDISPLAY2S
JB20H.1,MAIN
MOVP1,#0DBH
LCALLDISPLAY30S
JB20H.1,MAIN
MOVP1,#0BDH
LCALLDISPLAY2S
JB20H.1,MAIN
SJMPJIAOTONG
;8279初始化程序
INIT8279:
MOVDPTR,#CMD_8279
MOVA,#34H
MOVX@DPTR,A
MOVA,#90H
MOVX@DPTR,A
INIT8279_1:
LCALLCLEAR
MOVA,#90H
MOVX@DPTR,A
RET
CLEAR:
MOVA,#0DEH
MOVDPTR,#CMD_8279
MOVX@DPTR,A
WAIT1:
MOVXA,@DPTR
JBACC.7,WAIT1
RET
;扫描键盘并取键值子程序
;键值存放在A中
SCAN_KEY:
MOVDPTR,#CMD_8279
MOVXA,@DPTR
READ_FIFO:
ANLA,#7
JZNO_KEY
READ:
MOVA,#40H
MOVX@DPTR,A
MOVDPTR,#DATA_8279
MOVXA,@DPTR
SETBC
SCAN_KEY1:
RET
NO_KEY:
CLRC
SJMPSCAN_KEY1
KEY_NUM:
ANLA,#3FH
RET
;显示子程序
DISPLAY:
PUSH07H
MOVR0,#30H
MOVDPTR,#LED_TAB
MOVP2,#0BFH
MOVR1,#01H
MOVA,#90H
MOVX@R1,A
MOVR1,#00H
MOVR7,#2
DISPLAY1:
MOVA,@R0
MOVCA,@A+DPTR
MOVX@R1,A
INCR0
DJNZR7,DISPLAY1
POP07H
RET
;共阳极LED字形码表
LED_TAB:
DB0C0H,0F9H,0A4H,0b0h,99h,92h,82h,0f8h;
DB080H,90H,88H,83H,0C6H,0A1H,86H,8EH;
DB0FFH;
;中断服务子程序
INT_T0:
PUSHACC
MOVTH0,#3CH
MOVTL0,#0B0H
INC40H
MOVA,40H
CJNEA,#20,INT_T01
MOV40H,#00H
CLRC
CLRA
MOVA,#9AH
SUBBA,#01H
ADDA,60H
DAA
MOV60H,A
INT_T01:
POPACC
RETI
;延时30S并显示子程序
DISPLAY30S:
MOV60H,50H
LCALLDECSEC
RET
;延时2S并显示子程序
DISPLAY2S:
MOV60H,#02H
LCALLDECSEC
RET
;自减1子程序
DECSEC:
SETBTR0
MOVA,60H
MOVR0,#31H
LCALLP_BCD
LCALLDISPLAY
LCALLSCAN_KEY
JCXIUGAI
CONTINUE:
MOVA,60H
CJNEA,#00H,DECSEC
MOVR0,#31H
LCALLP_BCD
LCALLDISPLAY
SJMPOUT
OUT:
RET
;拆字子程序
P-BCD:
MOV@R0,A
ANLA,#0FH
XCHA,@R0
DECR0
SWAPA
ANLA,#0FH
MOV@R0,A
DECR0
RET
END
Z8279EQU0FF82H;8279状态/命令口地址
D8279EQU0FF80H;8279数据口地址
LEDMODEQU00H;左边输入八位字符显示
;外部译码键扫描方式,双键互锁
LEDFEQEQU33H;扫描速率
LEDCLSEQU0C1H;清除显示RAM
LEDWR0EQU80H;设定的将要写入的显示RAM地址
ORG0000H
LJMPSTART
ORG0003H;INT0中断入口地址
LJMPINT_0
ORG001BH;T1中断入口地址
LJMPINT_T1
ORG0040H
START:
MOVSP,#60H
MOVTMOD,#10H;置T1为方式1
SETBEX0;INT0中断有效
SETBIT0
SETBEA
MOVTL1,#00H;延时50mS常数
MOVTH1,#4cH
MOVR0,#2;延时100mS常数
SETBTR1;启动T1
SETBET1
setbpt1;必须设置定时器1的中断优先级高于外部中断0
LCALLINIT8279;初始化8279
LCALLSTATUS0;初始状态(都是红灯)
CIRCLE:
LCALLSTATUS1;南北绿灯,东西红灯
LCALLSTATUS2;南北绿灯闪转黄灯,东西红灯
LCALLSTATUS3;南北红灯,东西绿灯
LCALLSTATUS4;南北红灯,东西绿灯闪转黄灯
LJMPCIRCLE
INT_0:
PUSHPSW;保护现场
PUSH2
PUSH90H
clrex0
MOVP1,#0FH;南北,东西都亮红灯
MOVR2,#100;延时10秒
LCALLDELAY_DISPLAY
setbex0
POP90H;恢复现场
POP2
POPPSW
RETI
INT_T1:
PUSHACC
PUSHPSW
CLRTR1
MOVTL1,#00H;延时50mS常数
MOVTH1,#4CH
SETBTR1
DJNZR0,EXIT
MOVR0,#2;延时100ms常数
DECR2
EXIT:
POPPSW
POPACC
RETI
STATUS0:
;南北红灯,东西红灯
MOVP1,#0FH
MOVR2,#10;延时1秒
LCALLDELAY_DISPLAY
RET
STATUS1:
;南北绿灯,东西红灯
MOVP1,#96H;南北绿灯,东西红灯
MOVR2,#200;延时20秒
LCALLDELAY_DISPLAY
RET
STATUS2:
;南北绿灯闪转黄灯,东西红灯
MOVR3,#03H;绿灯闪3次
FLASH:
MOVP1,#9FH
MOVR2,#03H
LCALLDELAY_DISPLAY
MOVP1,#96H
MOVR2,#03H
LCALLDELAY_DISPLAY
DJNZR3,FLASH
MOVP1,#06H;南北黄灯,东西红灯
MOVR2,#10;延时1秒
LCALLDELAY_DISPLAY
RET
STATUS3:
;南北红灯,东西绿灯
MOVP1,#69H
MOVR2,#200;延时20秒
LCALLDELAY_DISPLAY
RET
STATUS4:
;南北红灯,东西绿灯闪转黄灯
MOVR3,#03H;绿灯闪3次
FLASH1:
MOVP1,#6FH
MOVR2,#03H
LCALLDELAY_DISPLAY
MOVP1,#69H
MOVR2,#03H
LCALLDELAY_DISPLAY
DJNZR3,FLASH1
MOVP1,#09H;南北红灯,东西黄灯
MOVR2,#10;延时1秒
LCALLDELAY_DISPLAY
NOP
RET
INIT8279:
;8279初始化子程序
PUSHDPH;保存现场
PUSHDPL
PUSHACC
LCALLDELAY;延时
MOVDPTR,#Z8279
MOVA,#LEDMOD;置8279工作方式
MOVX@DPTR,A
MOVA,#LEDFEQ;置键盘扫描速率
MOVX@DPTR,A
MOVA,#LEDCLS;清除LED显示
MOVX@DPTR,A
LCALLDELAY;延时
POPACC;恢复现场
POPDPL
POPDPH
RET
;显示字符子程序
;输入:
R4,位置R5,值
DISLED:
PUSHDPH;保存现场
PUSHDPL
PUSHACC
MOVA,#LEDWR0;置显示起始地址
ADDA,R4;加位置偏移量
MOVDPTR,#Z8279
MOVX@DPTR,A;设定显示位置
MOVDPTR,#LEDSEG;置显示常数表起始位置
MOVA,R5
MOVCA,@A+DPTR;查表
MOVDPTR,#D8279
MOVX@DPTR,A;显示数据
POPACC;恢复现场
POPDPL
POPDPH
RET
DELAY:
;延时子程序
PUSH0;保存现场
PUSH1
MOV0,#0H
DELAY1:
MOV1,#0H
DJNZ1,$
DJNZ0,DELAY1
POP1;恢复现场
POP0
RET
DELAY_DISPLAY:
;延时和显示时间子程序
PUSH1
PUSH0
pushacc
loopwait:
MOVb,#10
MOVa,2
divab
MOVb,#10
divab
MOVr4,#1
MOVr5,a
LCALLDISLED;显示秒高位
MOVr4,#0
MOVr5,b
LCALLDISLED;显示秒低位
MOVa,2
jnzloopwait;延时等待
popacc
POP0
POP1
RET
LEDSEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7'
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 交通灯 汇编 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)