欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2675|回復: 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 單片機教程網

快速回復 返回頂部 返回列表