新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機四驅無線遙控小車制作詳解

        51單片機四驅無線遙控小車制作詳解

        作者: 時間:2012-06-24 來源:網絡 收藏
        源代碼:

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

          ;接收程序

          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 ;設置波特率在9600

          MOV TL1,#0fdH ;設置波特率在9600

          SETB EA ;開起中斷

          clr ET1 ;關閉定時1中斷

          SETB ES ;開起串口中斷

          SETB TR1 ;啟動定時器1

          mov a,#0 ;

          mov p1,a ;設置初始值,即開機p1輸出00h不動作

          main:

          mov p1,a ;把a值給p1端口

          sjmp main ;無限循環main程序

          LOOP:

          jnb ri,$ ;判斷接收位是否接收完

          clr ri ;接收完后清空接收位

          mov a,sbuf ;發送的數據給a

          reti ;返回后,a的值就會給p1

          END

          ;發送程序

          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 ;設置波特率在9600

          MOV TL1,#0fdH

          setb EA ;開起中斷

          clr ET1 ;關閉定時1中斷

          setb ES ;開起串口中斷

          SETB TR1 ;啟動定時器1

          main:

          lcall kcs ;調用按鍵掃描程序

          jnz key ;有鍵按下則跳轉到key程序段

          sjmp main ;無限循環main程序

          kcs:

          mov p1,#0ffh ;p1給初值

          mov a,p1 ;p1的數值給a

          cpl a ;取反a

          anl a,#0ffh ;與運算

          ret

          key:

          lcall delay ;軟件延時程序,按鍵去抖

          jb acc.0,send1

          jb acc.1,send2

          jb acc.2,send3

          jb acc.3,send4

          jb acc.4,send5

          ret

          DELAY:

          MOV R5,#20

          D1:MOV R6,#10

          D2:MOV R7,#100

          DJNZ R7,$

          DJNZ R6,D2

          DJNZ R5,D1

          ret

          send1:

          mov r1,#10101010b ;前進指令

          sjmp send

          send2:

          mov r1,#01010101b ;后退指令

          sjmp send

          send3:

          mov r1,#01011010b ;左轉指令

          sjmp send

          send4:

          mov r1,#10100101b ;右轉指令

          sjmp send

          send5:

          mov r1,#00h ;停止指令

          sjmp send

          send:

          MOV SBUF,r1 ;指令給sbuf

          JNB TI,$ ;判斷是否發送完

          reti ;中斷返回

          END

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


        雙控開關相關文章:雙控開關原理

        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 邹平县| 富蕴县| 红桥区| 梓潼县| 邯郸县| 霞浦县| 简阳市| 茶陵县| 红河县| 松滋市| 滁州市| 石屏县| 治县。| 塘沽区| 揭西县| 南和县| 永州市| 鄯善县| 莱芜市| 奎屯市| 邳州市| 通渭县| 承德县| 东阿县| 梧州市| 谢通门县| 滦平县| 建宁县| 柘荣县| 宿迁市| 荥阳市| 临清市| 阳信县| 通许县| 苍南县| 宣化县| 四川省| 凤阳县| 蒲城县| 夏邑县| 扎赉特旗|