當前位置:首頁 > 單片機 > 單片機
[導讀] /**=============發(fā)送==================**/KEYBEQU20H.0;按鍵標致(為1時有鍵按下)ORG0000HAJMPMAINORG0030HMAIN:/* MOV SP,#60H MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6H MOV SCON,#50H MOV PCON

/**=============發(fā)送==================**/
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;調(diào)用鍵盤掃描
JBKEYB,BEGIN_;判斷是否有鍵按下
JMPBEGIN
BEGIN_:CLRKEYB
MOV R0,#80H
MOV A,R4
MOV @R0,A
MOV P0,A
/*
;發(fā)送聯(lián)絡信號
ITX4: MOV SBUF,#33H;發(fā)給從機1
ITX2:JBCTI,ITX1
JMPITX2;等待發(fā)送
ITX1:JBCRI,ITX3;等待二號機回答
JMPITX1
ITX3: MOV A,SBUF;接收聯(lián)絡信號
XRLA,#33H;異或,等于33H的話,A就為0
JNZITX4;二號機未準備好,繼續(xù)聯(lián)絡
;串行發(fā)送
CK2: MOV R0,#80H;開始讀取,數(shù)據(jù)傳送
START: MOV A,@R0
MOV SBUF,A
WAIT:JBCTI,CONT
JMPWAIT
CONT:JMPBEGIN*/
SJMPBEGIN

;********鍵盤掃描********調(diào)用鍵盤掃描以后會返回一個鍵值存于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;數(shù)據(jù)/命令選擇(H/L)
R_WBITP2.5;讀/寫選擇(H/L)
EBITP2.6;使能信號
DB0_DB7EQUP0;數(shù)據(jù)傳送端口
;***************程序開始**************


ORG0000H
AJMPMAIN
ORG0030H
MAIN:

MOV R4,#80H;第一行首地址從80H開始
MOV R1,#0C0H;第一行首地址從C0H開始
MOV R2,#00H
MOV R3,#16
LCALLINITIAL;顯示初始化程序
LCALLCLS;調(diào)用清屏子程序
AGAIN:
MOV A,R4
LCALLWRITE_COM;調(diào)用寫指令程序
MOV A,R2;取表格中的第幾個字符
MOV DPTR,#LINE1;取表格的首地址
LCALLDISP;調(diào)用顯示子程序
INCR4
INCR2
DJNZR3,AGAIN
MOV R2,#00H
MOV R3,#16
AGAIN1:
MOV A,R1
LCALLWRITE_COM;調(diào)用寫指令程序
MOV A,R2;取表格中的第幾個字符
MOV DPTR,#LINE3;取表格的首地址
LCALLDISP;調(diào)用顯示子程序
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
;顯示接收數(shù)據(jù)
MOV A,#0C7H
LCALLWRITE_COM;調(diào)用寫指令程序
MOV A,@R0;取表格中的第幾個字符
MOV DPTR,#LINE2;取表格的首地址
LCALLDISP;調(diào)用顯示子程序

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

;******寫數(shù)據(jù)到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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉