久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2579|回復: 0
收起左側

8通道車燈檢測程序(匯編)

[復制鏈接]
ID:70976 發表于 2014-12-26 22:33 | 顯示全部樓層 |閱讀模式
  1. ;時鐘 11.0592MHz,波特率=9600.

  2.          CONTR EQU 0C5H         ;A/D轉換寄存器
  3.          DAT   EQU 0C6H         ;A/D轉換結果寄存器

  4.          OUT   EQU  30H         ;測量后數值的8個地址的起始地址(30~37H)
  5.          BIAOS EQU  20H         ;20H.0為發送串口數據標識位,為1時發送數據,為0時不發送數據
  6.          ZHIL  EOU  10H         ;識別主機發來的指令代碼的,10H表示要顯示車燈狀態

  7.          P1M0  EQU  91H         ;P1口模式選擇寄存器0
  8.          P1M1  EQU  92H         ;P1口模式選擇寄存器1

  9. ;=================================================================================
  10. ;主程序
  11. ;=================================================================================
  12.          ORG 0000H
  13.          LJMP KS
  14.          ORG 0003H
  15.          LJMP INTO              ;串口中斷
  16.          ORG 0100H

  17. KS:      MOV SP,#60H            ;設置堆棧
  18.          MOV CHKOU,#00H         ;清標識
  19.          ACALL POWER            ;初始化AD轉換程序
  20.          ********************** ;初始化串口中斷
  21.          ACALL RS232            ;初始化串口

  22. KS1:     ACALL ADZH             ;調用AD轉換程序
  23.          ACALL ZTCB             ;調用車燈狀態識別程序
  24.          JB BIAOS.0,KS2         ;檢測主機是否發來要求顯示數據代碼指令
  25.          ACALL FSDM             ;收到指令,則發送車燈狀態標識代碼到主機
  26.          CLR BIAOS.0            ;發送數據完畢清標識

  27. KS2:     MOV R5,#100            ;100--延時1S
  28. LP1:     MOV R6,#200
  29.          ACALL DELAY
  30.          DJNZ R5,LP1
  31.          SJMP KS1               ;重新檢測


  32. INTO:                    ;串口接收程序
  33.          CJNE A,#ZHIL,L1        ;收到主機發來10H指令代碼的表示要顯示車燈狀態,其他代碼視為無效
  34.          SETB BIAOS.0           ;設顯示標識
  35. L1:      RET





  36. ;=================================================================================
  37. ;AD初始化程序
  38. ;=================================================================================
  39. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  40. ;開ADC電源,第一次使用時要打開內部模擬電源
  41. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  42. POWER:   ORL CONTR,#10000000H   ;開A/D轉換電源
  43.          MOV R6,#2
  44.          ACALL DELAY            ;開A/D轉換電源后要加延時,1mS以內就足夠了
  45. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  46. ;設置P1.*,設置A/D通道所在的I/O為開漏模式
  47. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  48. OPEN:    MOV P1M0,#11111111B    ;把P1口設為高阻輸入
  49.          MOV P1M1,#00000000B
  50.          RET

  51. ;=================================================================================
  52. ;AD初始化結束
  53. ;=================================================================================






  54. ;=================================================================================
  55. ;串口初始化
  56. ;=================================================================================
  57. RS232:   CLR ES                 ;禁止串口中斷
  58.          MOV TMOD,#20H          ;設置T1為波特率發生器
  59.          MOV SCON,#50H          ;0101,0000 8位數據位,無奇偶校驗
  60.          MOV TH1,#0FDH          ;11.0592MHz 晶振,波特率=9600,時長0.6695
  61.          MOV TL1,#96H  
  62.          SETB TR1               ;啟動T1
  63.          RET

  64. ;=================================================================================
  65. ;串口初始化結束
  66. ;=================================================================================







  67. ;=================================================================================
  68. ;AD轉換程序
  69. ;=================================================================================

  70. ADZH:    MOV R0,#11100000B      ;從P1.0通道開始測量,直到P1.7后返回再檢測
  71.          MOV R1,#OUT            ;測量后的數值(16進制)分別放到OUT(30H)起8個地址內
  72. LP2:     ACALL SET_CH           ;設置P1.*作為A/D轉換通道
  73.          ACALL GET_AD           ;測量電壓并且取A/D轉換結果
  74.          INC R1                 ;地址加1
  75.          INC R0                 ;換另一端口
  76.          CJNE R0,#11101000B,LP3 ;直到P1.7
  77.          MOV R0,#11100000B      ;再從P1.0來
  78.          MOV R1,#OUT            ;重新設定存放AD轉換后數值的地址
  79.          SJMP LP2

  80. LP3:     RET                    ;返回

  81. ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  82. ;R0存通道地址代碼:11100000B~11100111B,R1存通道地址:分別為30H~37H
  83. ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  84. ;以下測量電壓程序
  85. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  86. ;設置P1.*作為A/D轉換通道
  87. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  88. SET_CH:  MOV CONTR,R0           ;選擇P1.*作為A/D轉換通道
  89.          MOV R6,#1              ;更換A/D轉換通道后要適當延時,使輸入電壓穩定
  90.          ACALL DELAY         ;切換A/D轉換通道,加延時20uS~200uS就可以了,
  91.          RET

  92. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  93. ;測量電壓并且取A/D轉換結果
  94. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  95. GET_AD:  MOV DAT,#0
  96.          ORL CONTR,#00001000B   ;啟動 AD 轉換

  97. WAIT:    MOV A,#00010000B       ;判斷 AD 轉換是否完成
  98.          ANL A,CONTR
  99.          JZ WAIT                ;AD 轉換尚未完成,繼續等待
  100.          ANL CONTR,#11100111B   ;清0 ADC_FLAG,ADC_START位,停止A/D轉換         
  101.          MOV A,DAT
  102.          MOV @R1,A              ;保存 AD 轉換結果
  103.          RET

  104. ;=================================================================================
  105. ;AD轉換結束
  106. ;=================================================================================






  107. ;=================================================================================
  108. ;車燈狀態識別程序
  109. ;=================================================================================
  110. ZTCB:    MOV A,30H
  111.          CJNE A,#00H,L11        ;讀取車燈狀態,如果為0,表示沒有通電
  112.          CLR P2.0               ;給燈泡通電
  113.          ACALL ADZH2            ;AD轉換讀取數據
  114.          SETB P2.0              ;燈泡斷電
  115.          MOV A,30H
  116.          CJNE A,#00H,L12        ;讀取車燈狀態,如果為0,表示短路
  117.          MOV 38H,#00010010B     ;作標記,表示1#車燈短路
  118.          SJMP FAHUI
  119. L12:     CJNE A,#10H,L13        ;讀取車燈狀態,如果為10H,表示正常
  120.          MOV 38H,#00010000B     ;作標記,表示1#車燈正常
  121.          SJMP FAHUI
  122. L13:     CJNE A,#20H,L14        ;讀取車燈狀態,如果為20H,表示缺燈
  123.          MOV 38H,#00010011B     ;作標記,表示1#車燈缺燈
  124.          SJMP FAHUI
  125. L14:     CJNE A,#0F0H,FAHUI     ;讀取車燈狀態,如果為F0H,表示開路
  126.          MOV 38H,#00010011B     ;作標記,表示1#車燈開路
  127.          SJMP FAHUI

  128. L11:     CJNE A,#0F0H,FAHUI     ;讀取車燈狀態,如果為F0H,表示正在通電
  129.          MOV 38H,#00011000B     ;作標記,表示1#車燈通電

  130. FAHUI;  RET


  131. ADZH2:   MOV R0,#11100000B      ;從P1.0通道開始測量,直到P1.7后返回再檢測
  132.          MOV R1,#OUT            ;測量后的數值(16進制)分別放到OUT(30H)起8個地址內
  133.          ACALL SET_CH           ;設置P1.*作為A/D轉換通道
  134.          ACALL GET_AD           ;測量電壓并且取A/D轉換結果
  135.          RET
  136. ;=================================================================================
  137. ;車燈狀態識別結束
  138. ;=================================================================================







  139. ;=================================================================================
  140. ;向主機發送數據程序
  141. ;=================================================================================
  142. FADM:    CLR TI
  143.          MOV A,@R1
  144.          MOV SBUF,A
  145.          JNB TI,$
  146.          CLR TI
  147.          INC R1
  148.          CJNE R1,#38H,FADM
  149.          MOV R1,#30H
  150.          RET
  151. ;=================================================================================
  152. ;向主機發送數據結束
  153. ;=================================================================================





  154. ;=================================================================================
  155. ;延時子程序
  156. ;=================================================================================
  157. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  158. ;延時500微秒子程序   
  159. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
  160. DELAY:   MOV  R7,#229          ;延時 500 微秒,此條2個機器周期
  161.          DJNZ  R7,$
  162.          DJNZ R6,DELAY
  163.          RET                   ;此條2個機器周期,總延時(229*2+2+2)*(12/11.0592)≈500uS
  164. ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

  165.          END
復制代碼


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品一区在线发布 | 欧美成人在线影院 | 午夜精品久久久久久久久久久久久 | 国产亚洲一区二区三区在线观看 | 色综合一区二区 | 国产国产精品久久久久 | 正在播放国产精品 | 欧美一级在线观看 | 91精品国产乱码久久久久久久 | 日韩在线 | 久久久久久久久久久久91 | 亚洲精品一区二区在线观看 | 成年人在线观看视频 | 亚洲精品一区二区三区蜜桃久 | 国产美女在线精品免费 | 国产成人一区二区三区 | 久热精品在线观看视频 | 99成人| 超碰人人做 | 日韩久久久久 | 成人av在线网站 | 欧美精品欧美精品系列 | 久久9999久久 | 在线视频中文字幕 | 男人的天堂视频网站 | 欧美日韩在线一区二区三区 | 91久久久久久久 | 精品国产一区一区二区三亚瑟 | av电影一区 | 精品国产一区二区三区久久 | 欧美视频网 | 欧美日韩国产一区二区 | 久久免费视频在线 | 精品av| 日本成人免费观看 | 黑人精品欧美一区二区蜜桃 | 中文字幕成人av | 人人种亚洲 | 一级黄在线观看 | 久久一区 | 中文字幕av在线一二三区 |