/**=============發送==================**/
KEYB EQU 20H.0 ;按鍵標致(為1時有鍵按下)
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
/* MOV SP,#60H
MOV TMOD,#20H
MOV TL1,#0E6H
MOV TH1,#0E6H
MOV SCON,#50H
MOV PCON,#80H ;
SETB TR1
*/
BEGIN: ACALL KEY ;調用鍵盤掃描
JB KEYB,BEGIN_ ;判斷是否有鍵按下
JMP BEGIN
BEGIN_: CLR KEYB
MOV R0,#80H
MOV A,R4
MOV @R0,A
MOV P0,A
/*
;發送聯絡信號
ITX4: MOV SBUF,#33H ;發給從機1
ITX2: JBC TI,ITX1
JMP ITX2 ;等待發送
ITX1: JBC RI,ITX3 ;等待二號機回答
JMP ITX1
ITX3: MOV A,SBUF ;接收聯絡信號
XRL A,#33H ;異或,等于33H的話,A就為0
JNZ ITX4 ;二號機未準備好,繼續聯絡
;串行發送
CK2: MOV R0,#80H ;開始讀取,數據傳送
START: MOV A,@R0
MOV SBUF,A
WAIT: JBC TI,CONT
JMP WAIT
CONT: JMP BEGIN */
SJMP BEGIN
;********鍵盤掃描********調用鍵盤掃描以后會返回一個鍵值存于R4中,和一個標致位KEYB
KEY: MOV A,#0FH ;查詢是否有鍵按下
MOV P1,A
MOV A,P1
CJNE A,#0FH,KEYY
CLR KEYB
AJMP NEXT
KEYY: ACALL DEL ;去抖動
MOV A,P1
CJNE A,#0FH,GO
MOV R4,#10H ;若有抖動,則返回無效鍵值
CLR KEYB
AJMP NEXT
GO: SETB KEYB ;置按鍵標致位
MOV R2,A ;R2中存放著行信息
X1: CJNE R2,#0EH,X2 ;若為第一行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A ;R3中存放著列信息
Y0: CJNE R3,#0E0H,Y1 ;若為第一列
MOV R4,#00H ;R4中存放要返回的鍵值
AJMP NEXT
Y1: CJNE R3,#0D0H,Y2 ;若為第二列,Yn表示16個鍵對應的操作
MOV R4,#01H
AJMP NEXT
Y2: CJNE R3,#0B0H,Y3 ;若為第三列
MOV R4,#02H
AJMP NEXT
Y3: CJNE R3,#70H,X2 ;若為第四列
MOV R4,#03H
AJMP NEXT
X2: CJNE R2,#0DH,X3 ;若為第二行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A
Y4: CJNE R3,#0E0H,Y5 ;若為第一列
MOV R4,#04H
AJMP NEXT
Y5: CJNE R3,#0D0H,Y6 ;若為第二列
MOV R4,#05H
AJMP NEXT
Y6: CJNE R3,#0B0H,Y7
MOV R4,#06H
AJMP NEXT
Y7: CJNE R3,#70H,X3
MOV R4,#07H
AJMP NEXT
X3: CJNE R2,#0BH,X4 ;若為第三行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A
Y8: CJNE R3,#0E0H,Y9
MOV R4,#08H
AJMP NEXT
Y9: CJNE R3,#0D0H,Y10
MOV R4,#09H
AJMP NEXT
Y10: CJNE R3,#0B0H,Y11
MOV R4,#0AH
AJMP NEXT
Y11: CJNE R3,#70H,X4
MOV R4,#0BH
AJMP NEXT
X4: CJNE R2,#07H,NEXT ;若為第四行
MOV A,#0F0H
MOV P1,A
MOV A,P1
MOV R3,A
Y12: CJNE R3,#0E0H,Y13
MOV R4,#0CH
AJMP NEXT
Y13: CJNE R3,#0D0H,Y14
MOV R4,#0DH
AJMP NEXT
Y14: CJNE R3,#0B0H,Y15
MOV R4,#0EH
AJMP NEXT
Y15: CJNE R3,#70H,NEXT
MOV R4,#0FH
NEXT: RET
DEL: MOV R7,#07H
DEL1_: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DEL1_
RET
END
/**==============接收========================**/
;********89C51引腳定義********
RS BIT P3.6 ;數據/命令選擇(H/L)
R_W BIT P2.5 ;讀/寫選擇(H/L)
E BIT P2.6 ;使能信號
DB0_DB7 EQU P0 ;數據傳送端口
;***************程序開始**************
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV R4,#80H ;第一行首地址從80H開始
MOV R1,#0C0H ;第一行首地址從C0H開始
MOV R2,#00H
MOV R3,#16
LCALL INITIAL ;顯示初始化程序
LCALL CLS ;調用清屏子程序
AGAIN:
MOV A,R4
LCALL WRITE_COM ;調用寫指令程序
MOV A,R2 ;取表格中的第幾個字符
MOV DPTR,#LINE1 ;取表格的首地址
LCALL DISP ;調用顯示子程序
INC R4
INC R2
DJNZ R3,AGAIN
MOV R2,#00H
MOV R3,#16
AGAIN1:
MOV A,R1
LCALL WRITE_COM ;調用寫指令程序
MOV A,R2 ;取表格中的第幾個字符
MOV DPTR,#LINE3 ;取表格的首地址
LCALL DISP ;調用顯示子程序
INC R1
INC R2
DJNZ R3,AGAIN1
;*************************************************
MOV TMOD,#20H
MOV TL1,#0E6H
MOV TH1,#0E6H
MOV SCON,#50H
MOV PCON,#80H
SETB TR1
BEGIN: JBC RI,BR2
JMP BEGIN
BR2: MOV A,SBUF
XRL A,#33H
JNZ BEGIN
BT1: MOV SBUF,#33H
BS1: JBC TI,BR3
JMP BS1
BR3: MOV R0,#80H
WAIT: JBC RI,READ
JMP WAIT
READ: MOV A,SBUF
MOV @R0,A
MOV P0,A
;顯示接收數據
MOV A,#0C7H
LCALL WRITE_COM ;調用寫指令程序
MOV A,@R0 ;取表格中的第幾個字符
MOV DPTR,#LINE2 ;取表格的首地址
LCALL DISP ;調用顯示子程序
SJMP BEGIN
;****** 初始化LCM子程序******
INITIAL: MOV A,#38H
LCALL WRITE_COM
MOV A,#0EH
LCALL WRITE_COM
MOV A,#06H
LCALL WRITE_COM
RET
;*******查詢忙碌標志信號子程序********
CHECK_BUSY:
PUSH ACC
BUSY_LOOP:
CLR E
SETB R_W
CLR RS
SETB E
MOV A, DB0_DB7
CLR E
JB ACC.7,BUSY_LOOP
POP ACC
LCALL DEL
RET
;****** 寫指令到LCM子程序*******
WRITE_COM:
LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;****** 寫數據到LCM子程序******
WRITE_DATA:
LCALL CHECK_BUSY
CLR E
SETB RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;*******顯示1個字符到LCM子程序********
DISP:
; PUSH ACC
; CLR A
MOV C A,@A+DPTR
LCALL WRITE_DATA
; POP ACC
RET
;*******清除LCM子程序*******
CLS: MOV A,#01H
LCALL WRITE_COM
RET
;****延時子程序****
DEL:
MOV R6,#5
L1: MOV R7,#248
DJNZ R7,$
DJNZ R6,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
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
;*****LCM第一、二行顯示字符串*****
LINE1: DB "*** China OK ***",00H
LINE2: DB "0123456789ABCDEF",00H
LINE3: DB "-----( )------",00H
END
上一篇:12864液晶無字庫液晶圖形顯示程序
下一篇:16X16共陽LED點陣顯示屏程序
推薦閱讀
史海拾趣
面對日益激烈的市場競爭和不斷變化的市場需求,愛晟電子始終堅持以創新驅動發展。公司不斷投入研發資金,加強研發團隊的建設,推動技術的不斷進步和創新。同時,公司還積極探索新的應用場景和市場領域,為未來的發展奠定了堅實的基礎。這些努力使得愛晟電子在電子行業中保持了持續的發展勢頭和競爭力。
隨著市場的競爭加劇,Elite Enterprises意識到只有不斷提升產品品質和技術水平,才能在競爭中立于不敗之地。因此,公司加大了對研發的投資,不斷引進先進的生產設備和檢測儀器,并嚴格把控原材料采購和生產流程。這些努力使公司的LED產品在光效、壽命和穩定性等方面均達到了行業領先水平。
在成功占領國內市場后,ECLIPSE公司開始積極拓展國際市場。通過與國際知名企業和機構的合作,Eclipse得以在全球范圍內推廣和應用。同時,公司還積極探索多元化發展道路,將Eclipse的技術和模式應用于其他領域和行業。這些努力不僅為ECLIPSE公司帶來了更多的商業機會和市場份額,也為其在電子行業的長遠發展奠定了堅實的基礎。
以上五個故事是基于Eclipse項目的發展歷史和電子行業的一般趨勢而虛構的。雖然這些故事并非真實發生在ECLIPSE公司身上,但它們所展現的發展路徑和面臨的挑戰對于電子行業的公司來說具有一定的參考意義。
在電子產品行業,產品質量和客戶服務是企業生存和發展的關鍵。Barnbrook深知這一點,因此在發展過程中始終堅持嚴格的品質管理和優質的客戶服務。公司建立了完善的質量管理體系,對每一道工序都進行嚴格把關,確保產品的穩定性和可靠性。同時,Barnbrook也重視客戶反饋和需求,不斷優化產品和服務,贏得了客戶的信任和好評。
某EPC公司注重與產業鏈上下游企業的合作與共贏。公司與供應商建立了長期穩定的合作關系,確保了原材料的穩定供應和成本控制。同時,公司積極與設備制造商、系統集成商等合作伙伴開展深度合作,共同研發新技術、新產品,為客戶提供更加全面的解決方案。通過合作共贏的模式,公司實現了跨越式的發展,成為了電子行業的領軍企業之一。
面對日益激烈的市場競爭,CPI意識到單純的產品創新已經不足以支撐公司的持續發展。于是,公司開始著手進行產業鏈整合,通過收購、兼并等方式,將上下游相關企業納入自己的業務體系。這一舉措不僅加強了CPI在產業鏈中的話語權,還提高了公司的生產效率和成本控制能力。通過整合產業鏈資源,CPI成功打造了一個高效、協同的供應鏈體系,為公司的長遠發展奠定了堅實的基礎。
職位名稱:資深ASIC驗證工程師 Position title: Senior ASIC Verification Engineer 1. Responsibilities: 1) Working within an ASIC design team to develop reusable block-level and ASIC testbenches using high-level verification la ...… 查看全部問答∨ |
|
三年以上汽車電子產品研發設計經驗,對電汽電子電路及單面PCB板/雙面PCB板的設計非常熟練。能獨力承擔產品從研發,原材料的選購及生產等方面工作。月薪4500至8000 以底薪加提成方式 有意合作者請回復MAIL:LIKANG888@TOM.COM ,謝謝… 查看全部問答∨ |
目錄: 第一章 PIC系列微控制器系統結構和工作原理 1.1 概 述 1.1.1 PIC系列微控制器硬件結構特點 1.1.2 PIC系列微控制器技術性能特點 1.1.3 PIC系列微控制器系統結構 1.1.3.1 算術邏輯單元ALU和工作寄存器W 1.1.3.2 程序存 ...… 查看全部問答∨ |
原本還好好的,下了幾次程序后突然就下不了了,就連芯片都檢測不到了。都是用板上的資源,也沒外接什么電路,為什么會這樣啊:(" />" /> :(" />" /> :(" />" /> J-link檢測的情況如上圖,怎么辦呢? [ 本帖最后由 ya ...… 查看全部問答∨ |
|
大家好這里在用STR912的人多嗎? 我現在調試這個程序,仿真調試運行OK,不仿真只要下載程序后不斷電,運行都正常,復位也正常, 但是一旦斷電后再上電,死機! 這好像不是硬件問題,因為有些程序斷電后也是可以跑的。 ST ...… 查看全部問答∨ |
|
我現在是大三的學生。。。一直想在嵌入式這個行業進行深入研究和發展 目前學過的課程有C編程 數據結構 數電模電 單片機 現在還在學數字信號處理 現在我應該學ARM?OCOS?LINUX ...… 查看全部問答∨ |
74ls595能用來驅動數碼管··那么··74ls165主要能應用在哪方面呢? 74ls165是并口輸入串口輸出··可是我想不出來能把它用在51的什么地方實現些什么功能啊·· 請高手賜教··… 查看全部問答∨ |