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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Keil的實驗仿真板的使用

          基于Keil的實驗仿真板的使用

          作者: 時間:2011-05-06 來源:網(wǎng)絡 收藏

          圖4 板2 數(shù)碼管和鍵盤部份的電路圖
          圖3 板的設置
          軟件實全教程(五)
          CLR StartEnd ;啟動時處于停止狀態(tài)
          MOV LAMPCODE,#01H ;單燈流動的代碼
          LOOP: ACALL KEY ;調(diào)用鍵盤程序
          JNB F0,LNEXT ;如果無鍵按下,則繼續(xù)
          ACALL KEYPROC ;否則調(diào)用鍵盤處理程序
          LNEXT: ACALL LAMP ;調(diào)用燈顯示程序
          AJMP LOOP ;反復循環(huán),主程序到此結束
          ;延時程序,鍵盤處理中調(diào)用
          DELAY: MOV R7,#100
          D1: MOV R6,#100
          DJNZ R6,$
          DJNZ R7,D1
          RET
          KEYPROC:
          MOV A,B ;從B 寄存器中獲取鍵值
          JB ACC.2,KeyStart ;分析鍵的代碼,某位被按下,則該位為1
          JB ACC.3,KeyOver
          JB ACC.4,KeyUp
          JB ACC.5,KeyDown
          AJMP KEY_RET
          KeyStart:
          SETB StartEnd ;第一個鍵按下后的處理
          AJMP KEY_RET
          KeyOver:
          CLR StartEnd ;第二個鍵按下后的處理
          AJMP KEY_RET
          KeyUp:
          SETB UpDown ;第三個鍵按下后的處理
          AJMP KEY_RET
          KeyDown:
          CLR UpDown ;第四個鍵按下后的處理
          KEY_RET:
          RET
          KEY:
          CLR F0 ;清F0,表示無鍵按下。
          ORL P3,#00111100B ;將P3 口的接有鍵的四位置1
          MOV A,P3 ;取P3 的值
          ORL A,#11000011B ;將其余4 位置1
          CPL A ;取反
          JZ K_RET ;如果為0 則一定無鍵按下
          CALL DELAY ;否則延時去鍵抖
          ORL P3,#00111100B
          MOV A,P3
          ORL A,#11000011B
          軟件實全教程(五)
          CPL A
          JZ K_RET
          MOV B,A ;確實有鍵按下,將鍵值存入B 中
          SETB F0 ;設置有鍵按下的標志
          ;以下的代碼是可以被注釋掉的,如果去掉注釋,就具有判斷鍵是否釋放的功能,否則
          沒有
          K_RET: ;ORL P3,#00111100B ;此處循環(huán)等待鍵的釋放
          ;MOV A,P3
          ;ORL A,#11000011B
          ;CPL A
          ;JZ K_RET1 ;讀取的數(shù)據(jù)取反后為0 說明鍵釋放了
          ;AJMP K_RET
          ;K_RET1:CALL DELAY ;消除后沿抖動
          RET
          D500MS: ;流水燈的延遲時間
          MOV R7,#255
          D51: MOV R6,#255
          DJNZ R6,$
          DJNZ R7,D51
          RET
          LAMP:
          JB StartEnd,LampStart ;如果StartEnd=1,則啟動
          MOV P1,#0FFH
          AJMP LAMPRET ;否則關閉所有顯示,返回
          LampStart:
          JB UpDown,LAMPUP ;如果UpDown=1,則向上流動
          MOV A,LAMPCODE
          RL A ;實際就是左移位而已
          MOV LAMPCODE,A
          MOV P1,A
          LCALL D500MS
          LCALL D500MS
          AJMP LAMPRET
          LAMPUP:
          MOV A,LAMPCODE
          RR A ;向下流動實際就是右移
          MOV LAMPCODE,A
          MOV P1,A
          LCALL D500MS
          LAMPRET:
          RET
          END
          將程序輸入并建立工程文件,設置工程文件,在Debug 標簽頁中加入“-dledkey”,匯
          編、連接文件,按Ctrl+F5 開始調(diào)試,打開板,F5 功能鍵全速運行,可以看到所
          軟件實全教程(五)
          有燈均不亮,點擊最上面的按鈕,立即會看到燈流動起來了,點擊第二個按鍵,燈將停止流
          動,再次點擊第一個按鈕,使燈流動起來,點擊第三個按鈕,可以發(fā)現(xiàn)燈流動的方向變了,
          點擊第四個按鈕,燈的流動方向又變回來了。如果沒有出現(xiàn)所描述的現(xiàn)象,可以單步、
          過程單步等調(diào)試手段進行調(diào)試,在進行調(diào)試時仿真板會隨時顯示出當前的情況,是不是
          非常的直觀和方便呢?
          下面的一個例子是關于第二塊實驗仿真板的,演示點亮8 位數(shù)碼管。例9:
          ORG 0000h
          JMP MAIN
          ORG 30H
          MAIN:
          MOV SP,#5FH
          MOV R1,#08H
          MOV R0,#58H ;顯示緩沖區(qū)首地址
          MOV A,#2
          INIT:
          MOV @R0,A ;初始化顯示緩沖區(qū)
          INC A
          INC R0
          DJNZ R1,INIT ;將0-7 送顯示緩沖區(qū)
          LOOP:
          CALL DISPLAY
          JMP LOOP
          ;主程序到此結束
          DISPLAY:
          MOV R0,#7FH ;列選擇
          MOV R7,#08H ;共有8 個字符
          MOV R1,#58H ;顯示緩沖區(qū)首地址
          AGAIN:
          MOV A,@R1
          MOV DPTR,#DISPTABLE
          MOVC A,@A+DPTR
          MOV P0,A
          MOV P2,R0
          MOV A,R0
          RR A
          MOV R0,A
          INC R1
          DJNZ R7,AGAIN
          RET
          DISPTABLE: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0FFH ;字形碼表
          END
          這一程序內(nèi)部RAM 中58H 到5FH 被當成是顯示緩沖區(qū),主程序中用2-9 填充該顯示
          區(qū),然后調(diào)用顯示程序顯示2-9。這里是用了最簡單的逐位顯示的方式編寫的顯示程序。
          最后介紹一個小小技巧,將鼠標移入按鈕區(qū)域,按下左鍵,按鈕顯示被按下,不要放開
          Keil 軟件實全教程(五)
          鼠標左鍵,將光標移出按鈕區(qū)域,松開左鍵,可以看到,按鈕仍處于按下狀態(tài),利用這一功
          能,在需要I/O 口長期處于低電平時,你就不必一直用手按著鼠標的左鍵啦。

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


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();