<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)和8279驅(qū)動(dòng)數(shù)碼管顯示與上位機(jī)通信的收發(fā)程序

          基于單片機(jī)和8279驅(qū)動(dòng)數(shù)碼管顯示與上位機(jī)通信的收發(fā)程序

          作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
          ;系統(tǒng)晶振是 11.0592 MHz

          ;上位機(jī)用串口調(diào)試助手來(lái)配合實(shí)驗(yàn)
          Z8279EQU0FF82H;8279 狀態(tài)/命令口地址
          D8279EQU0FF80H;8279 數(shù)據(jù)口地址
          LEDMODEQU00H;左邊輸入 八位字符顯示
          ;外部譯碼鍵掃描方式,雙鍵互鎖
          LEDFEQEQU33H;掃描速率
          LEDCLSEQU0C1H;清除顯示 RAM
          LEDWR0EQU80H;設(shè)定的將要寫(xiě)入的顯示RAM地址
          READKBEQU40H;讀 FIFO RAM 地址 0 的命令字

          本文引用地址:http://www.ex-cimer.com/article/201611/321851.htm

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

          SETBEA
          WAIT:
          JBCRI,DIS_REC;是否接收到數(shù)據(jù)
          LCALLGETKEY;讀鍵盤
          CJNEA,#0FFH,WAIT;是否有鍵輸入
          MOVSBUF,B;串口輸出鍵盤輸入的值
          NOP
          SS:JBCTI,WAIT;是否發(fā)送完畢
          SJMPSS

          DIS_REC:
          MOVA,SBUF;讀串口接收到的數(shù)據(jù)
          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;顯示輸入的數(shù)字(0-F)
          ERROR:AJMPWAIT

          INIT8279:;8279初始化子程序
          PUSHDPH;保存現(xiàn)場(chǎng)
          PUSHDPL
          PUSHACC
          LCALLDELAY;延時(shí)
          MOVDPTR ,#Z8279
          MOVA,#LEDMOD;置8279工作方式
          MOVX@DPTR,A
          MOVA,#LEDFEQ;置鍵盤掃描速率
          MOVX@DPTR,A
          MOVA,#LEDCLS;清除 LED 顯示
          MOVX@DPTR,A
          POPACC;恢復(fù)現(xiàn)場(chǎng)
          POPDPL
          POPDPH
          RET
          ;讀取鍵盤子程序
          ;輸入: 無(wú); 輸出: B: 讀到的鍵碼 A: 按鍵的標(biāo)志
          GETKEY: PUSHDPH;保存現(xiàn)場(chǎng)
          PUSHDPL
          PUSHPSW
          MOVDPTR,#Z8279
          MOVXA,@DPTR;讀8279狀態(tài)
          ANLA,#07H;屏蔽D7-D3
          JNZGETVAL;判斷是否有鍵輸入
          MOVA,#0H;置標(biāo)志(無(wú)鍵輸入)
          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;置標(biāo)志(有鍵輸入)
          NKBHIT: POPPSW;恢復(fù)現(xiàn)場(chǎng)
          POPDPL
          POPDPH
          RET
          ;顯示字符子程序
          ;輸入: R4,位置 R5,值
          DISLED:PUSHDPH;保存現(xiàn)場(chǎng)
          PUSHDPL
          PUSHACC
          MOVA,#LEDWR0;置顯示起始地址
          ADDA,R4;加位置偏移量
          MOVDPTR,#Z8279
          MOVX@DPTR,A;設(shè)定顯示位置
          MOVDPTR,#LEDSEG;置顯示常數(shù)表起始位置
          MOVA,R5
          MOVCA,@A+DPTR;查表
          MOVDPTR,#D8279
          MOVX@DPTR,A;顯示數(shù)據(jù)
          POPACC;恢復(fù)現(xiàn)場(chǎng)
          POPDPL
          POPDPH
          RET

          DELAY:;延時(shí)子程序
          PUSH0;保存現(xiàn)場(chǎng)
          PUSH1
          MOV0,#0H
          DELAY1: MOV1,#0H
          DJNZ1,$
          DJNZ0,DELAY1
          POP1;恢復(fù)現(xiàn)場(chǎng)
          POP0
          RET
          ;LED顯示常數(shù)表
          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



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();