<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機實(shí)驗開(kāi)發(fā)板測試程序詳解

單片機實(shí)驗開(kāi)發(fā)板測試程序詳解

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

本文引用地址:http://dyxdggzs.com/article/149000.htm

  ORG 0000H

  AJMP MAIN;轉入主程序

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

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

  ;以下為主程序進(jìn)行CPU中斷方式設置

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

  SETB EA;打開(kāi)CPU總中斷請求

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

  SETB EX0;打開(kāi)INT0中斷請求

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

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

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

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

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

  SETB TR1;啟動(dòng)定時(shí)器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循環(huán)由下往上點(diǎn)亮一次,延時(shí)約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;數碼管個(gè)位顯示8

  LCALL DELAY

  MOV P0,#0FFH

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

  LCALL DELAY

  AJMP START;反復循環(huán)

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

  INT: CLR EA;暫時(shí)關(guān)閉CPU的所有中斷請求
MOV R6,#10

  SB: ACALL YS1;調用882微秒延時(shí)子程序

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

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

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

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

  ACALL YS2;延時(shí)4.74毫秒避開(kāi)4.5毫秒的結果碼

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

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

  LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號此時(shí)的高低電平狀態(tài)

  MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中

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

  LCALL YS3;檢測到高電平1的話(huà)延時(shí)1毫秒等待脈沖高電平結束

  UUUA: DJNZ R7,JJJJA

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

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

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

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

  LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號此時(shí)的高低電平狀態(tài)

  MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中

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

  LCALL YS3;檢測到高電平1的話(huà)延時(shí)1毫秒等待脈沖高電平結束

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

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

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

  DJNZ R3,JJJJ;接收滿(mǎn)8位換一個(gè)內存

  INC R1;對R1中的值加1,換下一個(gè)RAM

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

  MOV A,1AH

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

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

  MOV P1,1AH;將按鍵的鍵值通過(guò)P1口的8個(gè)LED顯示出來(lái)!

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

  MOV SBUF,A;通過(guò)串口在電腦屏幕上顯示出來(lái)

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

  LCALL YS2

  LCALL YS2

  LCALL YS2

  SETB P2.5;蜂鳴器停止

  EXIT: SETB EA ;允許中斷

  RETI ;退出解碼子程序

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

  D1: MOV R5,#20

  DJNZ R5,$

  DJNZ R4,D1

  RET

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

  D2: MOV R5,#235

  DJNZ R5,$

  DJNZ R4,D2

  RET

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

  D3:MOV R5,#248

  DJNZ R5,$

  DJNZ R4,D3

  RET

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

  L3: MOV R2 ,#0FAH

  L1: MOV R3 ,#0FAH

  L2: DJNZ R3 ,L2

  DJNZ R2 ,L1

  DJNZ R1 ,L3

  RET

  END

51單片機相關(guān)文章:51單片機教程


單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


電容傳感器相關(guān)文章:電容傳感器原理
晶振相關(guān)文章:晶振原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>