您的位置 首页 数字

根据单片机和8279驱动数码管显现与上位机通讯的收发程序

;系统晶振是110592MHz;上位机用串口调试助手来配合实验Z8279EQU0FF82H;8279状态命令口地址D8279EQU0FF80H;8279数据口地址LEDMODE

;体系晶振是 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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/258337.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部