找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9424|回复: 0
打印 上一主题 下一主题
收起左侧

小车程序单片机汇编语言

[复制链接]
跳转到指定楼层
楼主
ID:224816 发表于 2017-8-4 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小车程序所有资料51hei提供下载:
小车程序.rar (2.31 KB, 下载次数: 10)

单片机汇编源程序如下:
  1. DIRECT EQU 20H.0
  2. IN1    EQU p1.0
  3. IN2    EQU P1.1
  4. IN3    EQU P1.2
  5. IN4    EQU P1.3
  6. LED1   EQU P2.4
  7. LED2   EQU P2.5
  8. LED3   EQU P2.6
  9. LED4   EQU P2.7
  10. LED5   EQU P1.4
  11. V1     EQU P1.5
  12. V2     EQU P1.6
  13. KEY    EQU P1.7
  14. buzzer EQU P2.0


  15. ;**********************AT89S52*****************
  16. ORG 0000H
  17.     JB KEY,TIAO
  18.     LJMP MAIN
  19. TIAO:LJMP MAIN3
  20. ORG 000BH
  21. LJMP INTT0
  22. ;*******************基本部分程序*******************************
  23. MAIN:    MOV IE,#82H
  24.          MOV TMOD,#1
  25.          MOV TH0,#3CH
  26.          MOV  TL0,#0B0H
  27.          SETB TR0
  28.          MOV 40H,#00H
  29.          MOV 41H,#00H
  30.          MOV 42H,#00H
  31.          MOV 70H,#00H
  32.           SETB DIRECT
  33.           CLR BUZZER
  34.           MOV R7,#0
  35.           mov R3,#08H
  36.           LCALL ZHAOPH
  37. ;*************前进主程序*****************
  38. MAIN1:    LCALL QIANJIN
  39.           LCALL  DELAY10MS
  40.           LCALL STOP
  41.           LCALL DELAY30MS
  42.           LCALL HEIDAI

  43.           JNB DIRECT,MAIN2
  44. HEAR1:    AJMP MAIN1
  45. ;*************后退主程序***************
  46. MAIN2:    LCALL HOUTUI
  47.           LCALL  DELAY10MS
  48.           LCALL STOP
  49.           LCALL DELAY30MS
  50.           LCALL HEIDAI1

  51. HEAR2:   AJMP MAIN2

  52. ;*************判断小车位置程序******************
  53. PANDUAN:  INC  R7
  54.   NEXT0:  CJNE R7, #1 ,NEXT1
  55.           LCALL  BDIAN
  56.   NEXT1:  CJNE R7 ,#3 ,NEXT2
  57.           LCALL  ADIAN
  58.   NEXT2:  RET

  59. ;**************A点处理程序*********************
  60. ADIAN:LCALL STOP
  61.        LCALL  XIANG
  62.        CLR TR0
  63.        ;MOV A,40H
  64.        ;  ADD A,#05H
  65.        ;  MOV 40H,A
  66.        ;  LJMP DIYI
  67. ;DIYI2:   INC 52H
  68. ;        MOV 51H,#00H
  69.   ;       RET
  70. ;DIYI1:   INC 51H
  71. ;        MOV 50H,#00H
  72.   ;       RET
  73. ;DIYI:    INC 50H
  74. ;        MOV  R5,50H
  75.   ;       CJNE R5,#10 ,BIJIAO
  76.    ;      LCALL DIYI1
  77. ;BIJIAO:  DJNZ 40H,DIYI
  78. ;DIYI0:   INC 51H
  79. ;        MOV R6,51H
  80.   ;       CJNE R6,#10,BIJIAO1
  81.    ;      LCALL DIYI2
  82. ;BIJIAO1: DJNZ 41H,DIYI0
  83. ;DIYI3  :INC 52H
  84. ;       DJNZ 42H,DIYI3
  85.   ;
  86.    ;      MOV 40H,50H
  87.     ;     MOV 41H,51H
  88.      ;    MOV 42H,52H
  89.       ;   LCALL DISPLAY
  90. TING:    AJMP TING
  91. ;**************B点处理程序*********************
  92. BDIAN:    LCALL STOP
  93.           LCALL XIANG
  94.           CLR TR0

  95.           LCALL JISHI
  96.           LCALL XIANG               ;要延时5秒钟定时
  97.          ; LCALL HOUTUI
  98.          ; LCALL DELAY30MS
  99.          SETB TR0
  100.          ;MOV A,40H
  101.         ; ADD A,#05H
  102.          ;ADD A,50H

  103.         ; MOV 50H,A
  104.         ; MOV A,41H
  105.         ; ADDC A,51H
  106.         ; MOV 51H,A
  107.         ; MOV A,42H
  108.         ; ADDC A,52H
  109.         ; MOV 52H,A
  110.          CLR DIRECT
  111.          RET


  112. ;***************基本部分找平衡子程序****************
  113. ZHAOPH:;11 00  01

  114.        MOV A,P1
  115.        JB ACC.5,AHEAD
  116.        JNB ACC.6,BACK1
  117.        LCALL STOP
  118.        djnz r3,jxz
  119.        ljmp quit1
  120. jxz:   lcall delay
  121.        lcall delay
  122.        lcall delay
  123.        lcall delay
  124.        lcall delay
  125.        lcall delay
  126.        MOV A,P1
  127.        JB  ACC.5,AHEAD
  128.        JNB ACC.6,BACK1
  129. quit1: LCALL STOP
  130.        LCALL XIANG
  131.        CLR TR0
  132.        LCALL  JISHI
  133.        LCALL XIANG
  134.        SETB TR0
  135.        ;MOV 50H,40H
  136.       ; MOV 51H,41H
  137.        ;MOV 52H,42H
  138.        LJMP  MAIN1
  139. BACK1: LCALL HOUTUI
  140.        LCALL DELAY10MS
  141.        LCALL STOP
  142.        LCALL DELAY30MS
  143.        LCALL HEIDAI1F
  144.        LJMP ZHAOPH
  145. AHEAD:LCALL QIANJIN
  146.        LCALL DELAY10MS
  147.        LCALL STOP
  148.        LCALL DELAY30MS
  149.        LCALL HEIDAIF
  150.        LJMP ZHAOPH

  151. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  152. ;T0中断服务子程序,用于计时
  153. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  154. INTT0:;INC 50H
  155.       ;MOV A,50H
  156.       ;DA A
  157.       ;CJNE A,#99,QUIT
  158.       ;INC 51H
  159.       ;MOV 50H,#00H
  160.        MOV TH0,#3CH
  161.        MOV  TL0,#0B0H
  162.       INC 70H
  163.       MOV R1,70H
  164.       CJNE R1,#14H,QUIT
  165.       MOV 70H,#00H
  166.       LCALL YIMIAO
  167.       RETI
  168. YIMIAO:INC 40H
  169.        MOV R4,40H
  170.        CJNE R4,#10,JI11
  171.        LJMP JI1
  172. JI11:  LCALL DISPLAY
  173.        RETI
  174. JI1:   INC 41H
  175.        MOV 40H,#00H
  176.        MOV R4,41H
  177.        CJNE  R4,#10,JI22
  178.        LJMP JI2
  179. JI22:  LCALL DISPLAY
  180.        RETI
  181. JI2:   INC 42H
  182.        MOV 41H,#00H
  183.        LCALL DISPLAY
  184. QUIT: RETI

  185. ;*********黑带检测************
  186. HEIDAI:   JB LED5, CL
  187.           JB LED1,XIANGZUO  ;前左光电检测到黑带左转
  188.           JB LED2,XIANGYOU  ;前右光电检测到黑带右转
  189.           RET
  190. CL:       LCALL qianjin
  191.           lcall delay10ms
  192.           LCALL STOP
  193.           lcall  delay30ms
  194.           JB LED5, CL
  195.           LCALL PANDUAN
  196.           RET
  197. XIANGZUO:
  198.           LCALL ZUOZHUAN
  199.           LCALL DELAY10MS

  200.           LCALL STOP
  201.           LCALL DELAY30MS

  202.           JB LED1,XIANGZUO
  203.                  RET
  204. XIANGYOU: LCALL YOUZHUAN
  205.           LCALL DELAY10MS

  206.           LCALL STOP
  207.           LCALL DELAY30MS

  208.           JB LED2,XIANGYOU
  209.           RET
  210. HEIDAI1:  JB LED5, CL1
  211.           JB LED3,XIANGHZ  ;前左光电检测到黑带左转
  212.           JB LED4,XIANGHY  ;前右光电检测到黑带右转
  213.           RET
  214. CL1:       LCALL HOUTUI
  215.           lcall  delay10ms
  216.           LCALL STOP
  217.           lcall delay30ms
  218.           JB LED5, CL1
  219.           LCALL PANDUAN
  220.           RET
  221. XIANGHZ: LCALL HOUZUOZHUAN
  222.           LCALL DELAY10MS
  223.           LCALL STOP
  224.           LCALL DELAY30MS

  225.           JB LED3,XIANGHZ
  226.                  RET
  227. XIANGHY: LCALL HOUYOUZHUAN
  228.           LCALL DELAY10MS
  229.           LCALL STOP
  230.           LCALL DELAY30MS

  231.           JB LED4,XIANGHY
  232.           RET

  233. ;*****************电机驱动程序*******************

  234. STOP:             CLR IN1
  235.                   CLR IN2
  236.                   CLR IN3
  237.              CLR IN4
  238.              LCALL  DELAY30MS
  239.              RET
  240. ZUOZHUAN:    CLR  IN1
  241.              CLR  IN2
  242.              SETB IN3
  243.              CLR  IN4
  244.              LCALL  DELAY30MS
  245.              RET
  246. YOUZHUAN:    SETB IN1
  247.              CLR  IN2
  248.              CLR  IN3
  249.              CLR  IN4
  250.              LCALL   DELAY30MS
  251.              RET
  252. QIANJIN:     SETB IN1
  253.              CLR  IN2
  254.              SETB IN3
  255.              CLR  IN4
  256.              LCALL  DELAY30MS
  257.              RET
  258. HOUTUI:      CLR  IN1
  259.              SETB IN2
  260.              CLR  IN3
  261.              SETB IN4
  262.              LCALL  DELAY30MS
  263.              RET
  264. HOUYOUZHUAN:        CLR  IN1
  265.                      CLR  IN2
  266.                      CLR  IN3
  267.                      SETB IN4
  268.                 LCALL  DELAY30MS
  269.                     RET
  270. HOUZUOZHUAN:        CLR  IN1
  271.                     SETB IN2
  272.                      CLR  IN3
  273.                      CLR  IN4
  274.                 LCALL  DELAY30MS
  275.                 RET

  276. ;**********蜂鸣器处理****************
  277. XIANG:SETB BUZZER
  278.       LCALL DELAY
  279.       CLR BUZZER
  280.       RET

  281. ;************延时30MS程序-*****************

  282. DELAY30MS:
  283.     MOV     R5,#20
  284. DD1: MOV     R6,#50
  285. DD2: DJNZ    R6,$
  286.     DJNZ    R5,DD1
  287.     RET
  288. ;*************10MS延时*****************

  289. DELAY10MS:
  290.     MOV     R5,#15
  291. DDD1: MOV     R6,#50
  292. DDD2: DJNZ    R6,$
  293.     DJNZ    R5,DDD1
  294.     RET
  295. ;***********5秒钟倒计时程序*********************
  296. JISHI :
  297.        MOV  40H ,#5
  298.        MOV  41H ,#0
  299.        MOV  42H ,#0
  300.        LCALL DELAY
  301.        LCALL DISPLAY
  302.        MOV  40H ,#4
  303.        MOV  41H ,#00H
  304.        MOV  42H ,#00H
  305.        LCALL DELAY
  306.        LCALL DISPLAY
  307.        MOV  40H ,#3
  308.        MOV  41H ,#00H
  309.        MOV  42H ,#00H
  310.        LCALL DELAY
  311.        LCALL DISPLAY
  312.        MOV  40H ,#2
  313.        MOV  41H ,#00H
  314.        MOV  42H ,#00H
  315.        LCALL DELAY
  316.        LCALL DISPLAY
  317.        MOV  40H ,#1
  318.        MOV  41H ,#00H
  319.        MOV  42H ,#00H
  320.        LCALL DELAY
  321.        LCALL DISPLAY
  322.        MOV  40H ,#0
  323.        MOV  41H ,#00H
  324.        MOV  42H ,#00H
  325.        LCALL DELAY
  326.        LCALL DISPLAY
  327.        RET
  328. ;******************1s***********************

  329. DELAY:        MOV  45H,#10       ;延时一秒
  330. D2:        MOV   47H,#200
  331. D1:        MOV  46H ,#248
  332.         DJNZ  46H,$
  333.         DJNZ  47H,D1
  334.         DJNZ  45H,D2
  335.         RET


  336. ;;**************数码管显示子程序**********************
  337. ;入口参数:40H、41H  、42H
  338. DISPLAY:
  339.          MOV R2, #3
  340.       MOV R0,#40H              ;取待显示数作地址偏移量
  341. DL0: MOV A,@R0              ;指向字型表首址
  342.       MOV DPTR,#TAB
  343.       MOVC A,@A+DPTR         ;查表
  344.       MOV SBUF,A             ;发送显示
  345.       JNB TI,$            ;等待一帧发送完
  346.       CLR TI                 ;清中断标志,准备继续发送
  347.       INC R0                 ;更新显示单元
  348.       DJNZ R2,DL0            ;3数码管未显示完,继续
  349.       RET
  350. TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4,
  351.       DB 92H,82H,0F8H,80H,90H   ;5,6,7,8,9,


  352. ;************发挥部分*********************************
  353. MAIN3:
  354.          MOV IE,#82H
  355.          MOV TMOD,#1
  356.          MOV TH0,#3CH
  357.          MOV  TL0,#0B0H
  358.          SETB TR0
  359.          CLR  BUZZER

  360.          LCALL QIANJIN
  361.          LCALL DELAY10MS
  362.          LCALL STOP
  363.          LCALL DELAY30MS
  364.          LCALL HEIDAIF
  365.          MOV A,P1
  366.          JNB ACC.5 ,HEAR
  367.          LJMP ZHAOPHF
  368. HEAR:    AJMP MAIN3

  369. ;***********找平衡**********************************
  370. ZHAOPHF:;11-前进   00-后退  01-平衡
  371.        MOV A,P1
  372.        JB ACC.5,AHEADF
  373.        JNB ACC.6,BACK1F
  374.        LCALL STOP
  375.        LCALL DELAY
  376.        LCALL DELAY
  377.        LCALL DELAY
  378.        LCALL DELAY
  379.        LCALL DELAY
  380.        LCALL DELAY
  381.        MOV A,P1
  382.        JB ACC.5,AHEADF
  383.        JNB ACC.6,BACK1F
  384.        LCALL XIANG
  385.        CLR TR0
  386.        LCALL DELAY
  387.        LCALL JISHI
  388.        LCALL XIANG
  389.        SETB TR0
  390.        LJMP ZHAOPHF

  391. BACK1F: LCALL HOUTUI
  392.        LCALL DELAY10MS
  393.        LCALL STOP
  394.        LCALL DELAY30MS
  395.        LCALL HEIDAI1
  396.        LJMP ZHAOPHF

  397. AHEADF:LCALL QIANJIN
  398.        LCALL DELAY10MS
  399.        LCALL STOP
  400.        LCALL DELAY30MS
  401.        LCALL HEIDAIF
  402.        LJMP ZHAOPHF
  403. ;*********黑带检测************
  404. HEIDAIF:  JB LED1,XIANGZUOF  ;前左光电检测到黑带左转
  405.           JB LED2,XIANGYOUF  ;前右光电检测到黑带右转
  406.           RET

  407. XIANGZUOF:
  408.           LCALL ZUOZHUAN
  409.           LCALL DELAY10MS

  410.           LCALL STOP
  411.           LCALL DELAY30MS

  412.           JB LED1,XIANGZUOF
  413.                  RET
  414. XIANGYOUF: LCALL YOUZHUAN
  415.           LCALL DELAY10MS

  416.           LCALL STOP
  417.           LCALL DELAY30MS

  418.           JB LED2,XIANGYOUF
  419.           RET
  420. HEIDAI1F: JB LED3,XIANGHZF  ;前左光电检测到黑带左转
  421.           JB LED4,XIANGHYF  ;前右光电检测到黑带右转
  422.           RET
  423. XIANGHZF: LCALL HOUZUOZHUAN
  424.           LCALL DELAY10MS
  425.           LCALL STOP
  426.           LCALL DELAY30MS

  427.           JB LED3,XIANGHZF
  428.                  RET
  429. XIANGHYF: LCALL HOUYOUZHUAN
  430.           LCALL DELAY10MS
  431.           LCALL STOP
  432.           LCALL DELAY30MS

  433.           JB LED4,XIANGHYF
  434.           RET
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表