微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于单片机和8279驱动数码管显示与上位机通信的收发程序

基于单片机和8279驱动数码管显示与上位机通信的收发程序

时间:11-26 来源:互联网 点击:
;系统晶振是 11.0592 MHz

;上位机用串口调试助手来配合实验
Z8279EQU0FF82H;8279 状态/命令口地址
D8279EQU0FF80H;8279 数据口地址
LEDMODEQU00H;左边输入 八位字符显示
;外部译码键扫描方式,双键互锁
LEDFEQEQU33H;扫描速率
LEDCLSEQU0C1H;清除显示 RAM
LEDWR0EQU80H;设定的将要写入的显示RAM地址
READKBEQU40H;读 FIFO RAM 地址 0 的命令字

ORG0000H
AJMPSTART
ORG0040H
START:
MOVSP,#60H
LCALLINIT8279;初始化8279
MOVSCON,#50H;串口 方式 1
MOVTMOD,#20H;T1 方式 1
MOVTL1,#0FDH;波特率 9600 的常数
MOVTH1,#0FDH
SETBTR1

SETBEA
WAIT:
JBCRI,DIS_REC;是否接收到数据
LCALLGETKEY;读键盘
CJNEA,#0FFH,WAIT;是否有键输入
MOVSBUF,B;串口输出键盘输入的值
NOP
SS:JBCTI,WAIT;是否发送完毕
SJMPSS

DIS_REC:
MOVA,SBUF;读串口接收到的数据
CLRC
SUBBA,#30H;以下判定输入是否在0-F
JCERROR
SUBBA,#0AH
JNCDIS_REC1
ADDA,#0AH
SJMPDIS_REC2
DIS_REC1:
SUBBA,#7H
JCERROR
SUBBA,#6H
JNCERROR
ADDA,#10H
DIS_REC2:
MOVR4,#00H
MOVR5,A
LCALLDISLED;显示输入的数字(0-F)
ERROR:AJMPWAIT

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
POPACC;恢复现场
POPDPL
POPDPH
RET
;读取键盘子程序
;输入: 无; 输出: B: 读到的键码 A: 按键的标志
GETKEY: PUSHDPH;保存现场
PUSHDPL
PUSHPSW
MOVDPTR,#Z8279
MOVXA,@DPTR;读8279状态
ANLA,#07H;屏蔽D7-D3
JNZGETVAL;判断是否有键输入
MOVA,#0H;置标志(无键输入)
SJMPNKBHIT
GETVAL: MOVA,#READKB;读 FIFO RAM 命令
MOVX@DPTR,A
MOVDPTR,#D8279
MOVXA,@DPTR;读键
ANLA,#0FH;屏蔽 SHIFT 和 CTRL 键
MOVDPTR,#KEYCODE;键码表起始地址
MOVCA,@A+DPTR;查表
MOVB,A;置返回键值
MOVA,#0FFH;置标志(有键输入)
NKBHIT: POPPSW;恢复现场
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
;LED显示常数表
LEDSEG: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DB0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH,087H
DB0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H
DB6DH,02H,08H,00H,59H,0FH,76H
;键盘键码表
KEYCODE:DB30H,31H,32H,33H,34H,35H,36H,37H
DB38H,39H,41H,42H,43H,44H,45H,46H
DB47H,48H,49H,4AH,4BH,4CH,4DH,4EH
END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top