单片机交通灯汇编代码.docx

上传人:b****4 文档编号:3181450 上传时间:2022-11-19 格式:DOCX 页数:11 大小:16.33KB
下载 相关 举报
单片机交通灯汇编代码.docx_第1页
第1页 / 共11页
单片机交通灯汇编代码.docx_第2页
第2页 / 共11页
单片机交通灯汇编代码.docx_第3页
第3页 / 共11页
单片机交通灯汇编代码.docx_第4页
第4页 / 共11页
单片机交通灯汇编代码.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机交通灯汇编代码.docx

《单片机交通灯汇编代码.docx》由会员分享,可在线阅读,更多相关《单片机交通灯汇编代码.docx(11页珍藏版)》请在冰豆网上搜索。

单片机交通灯汇编代码.docx

单片机交通灯汇编代码

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_8279MOVA,#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_T01MOV40H,#00H

CLRC

CLRA

MOVA,#9AH

SUBBA,#01H

ADDA,60H

DAA

MOV60H,A

INT_T01:

POPACC

RETI

;延时30S并显示子程序

DISPLAY30S:

MOV60H,50HLCALLDECSEC

RET

;延时2S并显示子程序

DISPLAY2S:

MOV60H,#02HLCALLDECSEC

RET

;自减1子程序

DECSEC:

SETBTR0MOVA,60H

MOVR0,#31H

LCALLP_BCDLCALLDISPLAYLCALLSCAN_KEYJCXIUGAI

CONTINUE:

MOVA,60HCJNEA,#00H,DECSECMOVR0,#31H

LCALLP_BCDLCALLDISPLAYSJMPOUT

OUT:

RET

;拆字子程序

P-BCD:

MOV@R0,AANLA,#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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1