新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實驗開發板測試程序詳解

        單片機實驗開發板測試程序詳解

        作者: 時間:2012-05-23 來源:網絡 收藏
        這個的功能是:接通電源后P0口的八個發光二極管依次從下往上點亮,然后蜂鳴器鳴叫一聲,兩個繼電器輪流動作一次,數碼管的個位顯示8,再換成十位顯示8,然后不斷循環,如果這時按下紅外遙控器的按鍵時,蜂鳴器立即發出“滴滴滴”的提示音,同時將這個按鍵的鍵值通過串口在電腦屏幕上顯示出來(需要運行串口調試軟件)通過這個可以判斷板的各個部分的硬件和軟件都是完好的,具體的源如下:

        本文引用地址:http://www.104case.com/article/149000.htm

          ORG 0000H

          AJMP MAIN;轉入主程序

          ORG 0003H;外部中斷P3.2腳INT0入口地址

          AJMP INT;轉入外部中斷服務子程序(紅外遙控解碼程序)

          ;以下為主程序進行CPU中斷方式設置

          MAIN:LCALL YS3;等待硬件上電穩定

          SETB EA;打開CPU總中斷請求

          SETB IT0;設定INT0的觸發方式為脈沖負邊沿觸發

          SETB EX0;打開INT0中斷請求

          MOV SCON,#50H;設置成串口1方式

          MOV TMOD,#20H;波特率發生器T1工作在模式2上

          MOV PCON,#80H;波特率翻倍為2400x2=4800BPS

          MOV TH1,#0F3H;預置初值(按照波特率2400BPS預置初值)

          MOV TL1,#0F3H;預置初值(按照波特率2400BPS預置初值)

          SETB TR1;啟動定時器T1

          ;以上完成串口通訊初始化設置

          START:MOV P1,#01111111B

          LCALL DELAY

          MOV P1,#10111111B

          LCALL DELAY

          MOV P1,#11011111B

          LCALL DELAY

          MOV P1,#11101111B

          LCALL DELAY

          MOV P1,#11110111B

          LCALL DELAY

          MOV P1,#11111011B

          LCALL DELAY

          MOV P1,#11111101B

          LCALL DELAY

          MOV P1,#11111110B;P1口的LED循環由下往上點亮一次,延時約250毫秒

          LCALL DELAY

          MOV P2,#11011111B;蜂鳴器鳴響一聲

          LCALL DELAY

          MOV P2,#11101111B;繼電器J1吸合一次

          LCALL DELAY

          MOV P2,#11110111B;繼電器J2吸合一次

          LCALL DELAY

          MOV P0,#0FFH

          MOV P2,#01111111B;數碼管個位顯示8

          LCALL DELAY

          MOV P0,#0FFH

          MOV P2,#10111111B;數碼管十位顯示8

          LCALL DELAY

          AJMP START;反復循環

          ;以下為進入P3.2腳外部中斷子程序,也就是解碼程序

          INT: CLR EA;暫時關閉CPU的所有中斷請求
        MOV R6,#10

          SB: ACALL YS1;調用882微秒延時子程序

          JB P3.2,EXIT;延時882微秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序

          DJNZ R6, SB;重復10次,目的是檢測在8820微秒內如果出現高電平就退出解碼程序

          ;以上完成對遙控信號的9000微秒的初始低電平信號的識別。

          JNB P3.2, $;等待高電平避開9毫秒低電平引導脈沖

          ACALL YS2;延時4.74毫秒避開4.5毫秒的結果碼

          MOV R7,#26;忽略前26位系統識別碼

          JJJJA:JNB P3.2,$;等待地址碼第一位的高電平信號

          LCALL YS1;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態

          MOV C,P3.2;將P3.2引腳此時的電平狀態0或1存入C中

          JNC UUUA;如果為0就跳轉到UUUA

          LCALL YS3;檢測到高電平1的話延時1毫秒等待脈沖高電平結束

          UUUA: DJNZ R7,JJJJA

          MOV R1,#1AH ;設定1AH為起始RAM區

          MOV R2,#2;接收從1AH到1BH的2個內存,用于存放操作碼和操作反碼

          PP: MOV R3,#8;每組數據為8位

          JJJJ: JNB P3.2,$;等待地址碼第一位的高電平信號

          LCALL YS1;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態

          MOV C,P3.2;將P3.2引腳此時的電平狀態0或1存入C中

          JNC UUU;如果為0就跳轉到UUU

          LCALL YS3;檢測到高電平1的話延時1毫秒等待脈沖高電平結束

          UUU: MOV A,@R1;將R1中地址的給A

          RRC A;將C中的值0或1移入A中的最低位

          MOV @R1,A;將A中的數暫時存放在R1數值的內存中

          DJNZ R3,JJJJ;接收滿8位換一個內存

          INC R1;對R1中的值加1,換下一個RAM

          DJNZ R2,PP ;接收完8位數據碼和8位數據反碼,存放在1AH/1BH中

          MOV A,1AH

          CPL A;對1AH取反后和1BH比較

          CJNE A,1BH,EXIT;如果不等表示接收數據發生錯誤,放棄

          MOV P1,1AH;將按鍵的鍵值通過P1口的8個LED顯示出來!

          MOV A,1AH;將紅外遙控器具體按鍵的鍵值發送到串口去

          MOV SBUF,A;通過串口在電腦屏幕上顯示出來

          CLR P2.5;蜂鳴器鳴響嘀嘀嘀的聲音,表示解碼成功

          LCALL YS2

          LCALL YS2

          LCALL YS2

          SETB P2.5;蜂鳴器停止

          EXIT: SETB EA ;允許中斷

          RETI ;退出解碼子程序

          YS1: MOV R4,#20 ;(占用R4/R5)延時子程序1,精確延時882微秒

          D1: MOV R5,#20

          DJNZ R5,$

          DJNZ R4,D1

          RET

          YS2: MOV R4,#10 ;(占用R4/R5)延時子程序2,精確延時4740微秒

          D2: MOV R5,#235

          DJNZ R5,$

          DJNZ R4,D2

          RET

          YS3: MOV R4,#2;(占用R4/R5)延時程序3,精確延時1000微秒

          D3:MOV R5,#248

          DJNZ R5,$

          DJNZ R4,D3

          RET

          DELAY:MOV R1,#08H;(占用R1/R2/R3)延時子程序,12M晶振延時約250毫秒

          L3: MOV R2 ,#0FAH

          L1: MOV R3 ,#0FAH

          L2: DJNZ R3 ,L2

          DJNZ R2 ,L1

          DJNZ R1 ,L3

          RET

          END

        51單片機相關文章:51單片機教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        電容傳感器相關文章:電容傳感器原理
        晶振相關文章:晶振原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云阳县| 郎溪县| 阜平县| 拉萨市| 祁东县| 红桥区| 平度市| 邯郸县| 中西区| 渑池县| 义马市| 尉犁县| 大余县| 深水埗区| 搜索| 福安市| 高尔夫| 额济纳旗| 常宁市| 都江堰市| 香河县| 克山县| 施甸县| 涞源县| 阳原县| 鄢陵县| 沐川县| 丁青县| 威信县| 册亨县| 乌鲁木齐市| 垦利县| 寿宁县| 莱芜市| 鄱阳县| 绥中县| 冀州市| 望城县| 定安县| 哈尔滨市| 金阳县|