当前位置:首页 > 单片机 > 单片机
[导读] /**=============发送==================**/KEYBEQU20H.0;按键标致(为1时有键按下)ORG0000HAJMPMAINORG0030HMAIN:/* MOV SP,#60H MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6H MOV SCON,#50H MOV PCON

/**=============发送==================**/
KEYBEQU20H.0;按键标致(为1时有键按下)

ORG0000H

AJMPMAIN
ORG0030H
MAIN:
/* MOV SP,#60H
MOV TMOD,#20H
MOV TL1,#0E6H
MOV TH1,#0E6H
MOV SCON,#50H
MOV PCON,#80H;
SETBTR1
*/
BEGIN:ACALLKEY;调用键盘扫描
JBKEYB,BEGIN_;判断是否有键按下
JMPBEGIN
BEGIN_:CLRKEYB
MOV R0,#80H
MOV A,R4
MOV @R0,A
MOV P0,A
/*
;发送联络信号
ITX4: MOV SBUF,#33H;发给从机1
ITX2:JBCTI,ITX1
JMPITX2;等待发送
ITX1:JBCRI,ITX3;等待二号机回答
JMPITX1
ITX3: MOV A,SBUF;接收联络信号
XRLA,#33H;异或,等于33H的话,A就为0
JNZITX4;二号机未准备好,继续联络
;串行发送
CK2: MOV R0,#80H;开始读取,数据传送
START: MOV A,@R0
MOV SBUF,A
WAIT:JBCTI,CONT
JMPWAIT
CONT:JMPBEGIN*/
SJMPBEGIN

;********键盘扫描********调用键盘扫描以后会返回一个键值存于R4中,和一个标致位KEYB
KEY: MOV A,#0FH;查询是否有键按下
MOV P1,A
MOV A,P1
CJNEA,#0FH,KEYY
CLRKEYB
AJMPNEXT
KEYY:ACALLDEL;去抖动
MOV A,P1
CJNEA,#0FH,GO
MOV R4,#10H;若有抖动,则返回无效键值
CLRKEYB
AJMPNEXT
GO:SETBKEYB;置按键标致位
MOV R2,A;R2中存放着行信息
X1:CJNER2,#0EH,X2;若为第一行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A;R3中存放着列信息
Y0:CJNER3,#0E0H,Y1;若为第一列
MOV R4,#00H;R4中存放要返回的键值
AJMPNEXT
Y1:CJNER3,#0D0H,Y2;若为第二列,Yn表示16个键对应的操作
MOV R4,#01H
AJMPNEXT
Y2:CJNER3,#0B0H,Y3;若为第三列
MOV R4,#02H
AJMPNEXT
Y3:CJNER3,#70H,X2;若为第四列
MOV R4,#03H
AJMPNEXT
X2:CJNER2,#0DH,X3;若为第二行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A
Y4:CJNER3,#0E0H,Y5;若为第一列
MOV R4,#04H
AJMPNEXT
Y5:CJNER3,#0D0H,Y6;若为第二列
MOV R4,#05H
AJMPNEXT
Y6:CJNER3,#0B0H,Y7
MOV R4,#06H
AJMPNEXT
Y7:CJNER3,#70H,X3
MOV R4,#07H
AJMPNEXT
X3:CJNER2,#0BH,X4;若为第三行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A
Y8:CJNER3,#0E0H,Y9
MOV R4,#08H
AJMPNEXT
Y9:CJNER3,#0D0H,Y10
MOV R4,#09H
AJMPNEXT
Y10:CJNER3,#0B0H,Y11
MOV R4,#0AH
AJMPNEXT
Y11:CJNER3,#70H,X4
MOV R4,#0BH
AJMPNEXT
X4:CJNER2,#07H,NEXT;若为第四行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A
Y12:CJNER3,#0E0H,Y13
MOV R4,#0CH
AJMPNEXT
Y13:CJNER3,#0D0H,Y14
MOV R4,#0DH
AJMPNEXT
Y14:CJNER3,#0B0H,Y15
MOV R4,#0EH
AJMPNEXT
Y15:CJNER3,#70H,NEXT
MOV R4,#0FH
NEXT:RET



DEL: MOV R7,#07H
DEL1_: MOV R6,#0FFH
DJNZR6,$
DJNZR7,DEL1_
RET


END





/**==============接收========================**/
;********89C51引脚定义********
RSBITP3.6;数据/命令选择(H/L)
R_WBITP2.5;读/写选择(H/L)
EBITP2.6;使能信号
DB0_DB7EQUP0;数据传送端口
;***************程序开始**************


ORG0000H
AJMPMAIN
ORG0030H
MAIN:

MOV R4,#80H;第一行首地址从80H开始
MOV R1,#0C0H;第一行首地址从C0H开始
MOV R2,#00H
MOV R3,#16
LCALLINITIAL;显示初始化程序
LCALLCLS;调用清屏子程序
AGAIN:
MOV A,R4
LCALLWRITE_COM;调用写指令程序
MOV A,R2;取表格中的第几个字符
MOV DPTR,#LINE1;取表格的首地址
LCALLDISP;调用显示子程序
INCR4
INCR2
DJNZR3,AGAIN
MOV R2,#00H
MOV R3,#16
AGAIN1:
MOV A,R1
LCALLWRITE_COM;调用写指令程序
MOV A,R2;取表格中的第几个字符
MOV DPTR,#LINE3;取表格的首地址
LCALLDISP;调用显示子程序
INCR1
INCR2
DJNZR3,AGAIN1


;*************************************************
MOV TMOD,#20H
MOV TL1,#0E6H
MOV TH1,#0E6H
MOV SCON,#50H
MOV PCON,#80H
SETBTR1

BEGIN:JBCRI,BR2
JMPBEGIN
BR2: MOV A,SBUF
XRLA,#33H
JNZBEGIN
BT1: MOV SBUF,#33H
BS1:JBCTI,BR3
JMPBS1

BR3: MOV R0,#80H
WAIT:JBCRI,READ
JMPWAIT
READ: MOV A,SBUF
MOV @R0,A
MOV P0,A
;显示接收数据
MOV A,#0C7H
LCALLWRITE_COM;调用写指令程序
MOV A,@R0;取表格中的第几个字符
MOV DPTR,#LINE2;取表格的首地址
LCALLDISP;调用显示子程序

SJMPBEGIN

;******初始化LCM子程序******
INITIAL: MOV A,#38H
LCALLWRITE_COM
MOV A,#0EH
LCALLWRITE_COM
MOV A,#06H
LCALLWRITE_COM
RET

;*******查询忙碌标志信号子程序********
CHECK_BUSY:
PUSHACC
BUSY_LOOP:
CLRE
SETBR_W
CLRRS
SETBE
MOV A,DB0_DB7
CLRE
JBACC.7,BUSY_LOOP
POPACC
LCALLDEL
RET

;******写指令到LCM子程序*******
WRITE_COM:
LCALLCHECK_BUSY
CLRE
CLRRS
CLRR_W
SETBE
MOV DB0_DB7,A
CLRE
RET

;******写数据到LCM子程序******
WRITE_DATA:
LCALLCHECK_BUSY
CLRE
SETBRS
CLRR_W
SETBE
MOV DB0_DB7,A
CLRE
RET
;*******显示1个字符到LCM子程序********
DISP:
;PUSHACC
;CLRA
MOV CA,@A+DPTR
LCALLWRITE_DATA
;POPACC
RET

;*******清除LCM子程序*******
CLS: MOV A,#01H
LCALLWRITE_COM
RET

;****延时子程序****
DEL:
MOV R6,#5
L1: MOV R7,#248
DJNZR7,$
DJNZR6,L1
RET
;******延时0.1s子程序:T=两个机器周期(2*1us)*R5(4)*R6(256)*R7(256)us=0.524288s
DELL: MOV R7,#09H
DEL1: MOV R6,#0FFH
DEL2: MOV R5,#0FFH
DJNZR5,$
DJNZR6,DEL2
DJNZR7,DEL1
RET

;*****LCM第一、二行显示字符串*****
LINE1:DB"***ChinaOK***",00H
LINE2:DB"0123456789ABCDEF",00H
LINE3:DB"-----()------",00H


END

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

当地时间 9 月 8 日,SpaceX 与 EchoStar 正式达成一项价值 170 亿美元的频谱交易,SpaceX 将收购 EchoStar 旗下 AWS-4 频段(2GHz 频段)及 H 频段的频谱许可证,此举引发...

关键字: SpaceX EchoStar 星链 通信

在现代工业和汽车领域,控制器局域网(CAN)总线作为一种可靠且高效的通信方式,广泛应用于各种电子设备之间的数据传输。在 CAN 总线系统中,有一个看似毫不起眼却至关重要的元件 ——120Ω 终端电阻。这个小小的电阻,对于...

关键字: 控制器局域网 总线 通信

8月14日消息,今天,国务院新闻办公室举行“高质量完成‘十四五’规划”系列主题新闻发布会,国家数据局介绍“十四五”时期数字中国建设发展成就。

关键字: 算力 通信

北京2025年8月8日 /美通社/ -- 8月7日,浪潮信息发布面向万亿参数大模型的超节点AI服务器"元脑SD200"。该产品基于浪潮信息创新研发的多主机低延迟内存语义通信架构,以开放系统设计向上扩展...

关键字: 模型 节点 SD 通信

在现代通信技术的复杂网络中,射频(RF)滤波器犹如一位幕后英雄,虽鲜少被大众提及,却发挥着举足轻重的作用。从我们日常使用的智能手机,到构建通信基础设施的基站,再到新兴的物联网设备,RF 滤波器无处不在,默默保障着信号的顺...

关键字: 射频 滤波器 通信

在当今数字化时代,5G 通信技术以前所未有的速度改变着我们的生活,从高速的数据传输到实时的物联网应用,5G 的影响力无处不在。然而,在这一系列令人瞩目的技术背后,有一个常常被忽视却至关重要的角色 —— 晶振。它如同幕后的...

关键字: 通信 数据传输 晶振

德国斯图加特 2025年7月2日 /美通社/ -- 国际关键通信协会The Critical Communications Association (以下简称TCCA)宣布...

关键字: 通信 TETRA TC 测试流程

近日,欧洲统一专利法院曼海姆分庭更新的一则诉讼信息,引发了全球科技界震动——联发科子公司HFI Innovation起诉了华为旗下五家子公司侵犯其LTE专利EP2689624。这场诉讼标志着两家科技巨头持续两年的专利纠纷...

关键字: 通信

为了进一步推动电子通信半导体产业创新发展,“EIS 2025 中国电子通信半导体数智创新峰会", 以 “智联万物·芯创未来 ”为主题, 将于 2025 年 10月 24日在上海隆重举办。

关键字: 通信 半导体

6 月 5 日,市场研究机构 Omdia 发布最新报告指出,在人工智能技术的深度赋能下,全球 6G 网络商业化进程显著提速,预计 2027 年至 2030 年将成为 6G 技术的导入期,并于 2037 年起成为通信领域的...

关键字: 通信 人工智能 6G
关闭