新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51四驅無線遙控小車(200米有效距離)

        51四驅無線遙控小車(200米有效距離)

        作者: 時間:2016-11-29 來源:網絡 收藏
        源代碼:;接收程序ORG  0          ;程序起始地址SJMP STAR       ;跳轉到主程序ORG 30H         ;串口中斷地址sjmp loop       ;跳轉到中斷服務程序STAR:MOV SP,#5FH     ;設置堆棧MOV SCON,#50H   ;串行數據格式(詳情請參考51手冊)MOV TMOD,#20H   ;定時器工作方式(請參考51手冊)MOV PCON,#0     ;波特率不倍速(請參考51手冊)MOV TH1,#0fdH   ;設置波特率在9600MOV TL1,#0fdH   ;設置波特率在9600SETB EA         ;開起中斷clr ET1         ;關閉定時1中斷SETB ES         ;開起串口中斷SETB TR1        ;啟動定時器1mov a,#0        ;mov p1,a        ;設置初始值,即開機p1輸出00h小車不動作main:mov p1,a       ;把a值給p1端口sjmp main      ;無限循環main程序LOOP:         jnb  ri,$     ;判斷接收位是否接收完clr  ri       ;接收完后清空接收位mov  a,sbuf   ;發送的數據給areti          ;返回后,a的值就會給p1END;發送程序ORG 0          ;程序起始地址SJMP START     ;跳轉到主程序ORG 30H        ;串口中斷地址START:MOV SP,#5FH    ;設置堆棧MOV TMOD,#20H  ;定時器工作方式(請參考51手冊)MOV PCON,#0    ;波特率不倍速(請參考51手冊)MOV SCON,#50H  ;串行數據格式(詳情請參考51手冊)MOV TH1,#0fdH  ;設置波特率在9600MOV TL1,#0fdHsetb EA        ;開起中斷clr  ET1       ;關閉定時1中斷setb ES        ;開起串口中斷SETB TR1       ;啟動定時器1main:lcall kcs      ;調用按鍵掃描程序jnz   key      ;有鍵按下則跳轉到key程序段sjmp main      ;無限循環main程序kcs: mov p1,#0ffh   ;p1給初值mov a,p1       ;p1的數值給acpl a          ;取反aanl a,#0ffh    ;與運算ret           key:lcall delay     ;軟件延時程序,按鍵去抖jb  acc.0,send1jb  acc.1,send2jb  acc.2,send3jb  acc.3,send4jb  acc.4,send5retDELAY:MOV R5,#20D1:MOV R6,#10D2:MOV R7,#100DJNZ R7,$DJNZ R6,D2DJNZ R5,D1ret    send1:mov  r1,#10101010b     ;前進指令sjmp sendsend2:mov  r1,#01010101b     ;后退指令sjmp sendsend3:mov  r1,#01011010b     ;左轉指令sjmp sendsend4:mov  r1,#10100101b     ;右轉指令sjmp sendsend5:mov  r1,#00h           ;停止指令sjmp sendsend: MOV SBUF,r1     ;指令給sbufJNB TI,$        ;判斷是否發送完reti            ;中斷返回END

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 监利县| 峨眉山市| 龙陵县| 克拉玛依市| 上栗县| 同江市| 历史| 平南县| 澎湖县| 琼中| 西乌珠穆沁旗| 同江市| 永顺县| 德庆县| 铁岭县| 体育| 阿拉善盟| 历史| 都江堰市| 枝江市| 正阳县| 大名县| 英德市| 抚州市| 宁城县| 娄烦县| 许昌市| 敦化市| 永德县| 应城市| 林甸县| 射洪县| 清苑县| 仙游县| 亚东县| 台湾省| 井陉县| 高淳县| 六安市| 万宁市| 昭觉县|