標(biāo)題: PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序 [打印本頁(yè)]

作者: 51黑ff    時(shí)間: 2016-9-12 00:17
標(biāo)題: PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序
完整程序下載: PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序.zip (1.81 KB, 下載次數(shù): 51)

  1. ;程序功能:上電開機(jī):PIN5為高電平,綠燈亮;PIN2,PIN3為低電平,紅燈滅;
  2. ;        輪流檢測(cè)PIN6,PIN7腳電平,欠壓3.9V,10V,紅燈亮,綠燈滅,過(guò)壓5.9V,15.9V
  3. ;        紅燈亮,綠燈滅,alram為TTL高電平,過(guò)壓鎖死
  4.   LIST P=12F675
  5. INCLUDE <P12F675.INC>
  6. __CONFIG(B'11000101110100')
  7. ;Highest band gap voltage,0,0,Data memory is not protected
  8. ;Program memory is code-protected,BOD enabled,MCLR pin is MCLR function
  9. ;PWRT enabled,WDT disabled,INTOSC oscillator
  10. ;**************************************
  11.   
  12. READH     EQU 2Ah            ;讀到的高2位數(shù)據(jù)
  13. READL     EQU 2Bh            ;讀到的低8位數(shù)據(jù)
  14. SOUH      EQU 40h            ;欠壓設(shè)置,高2位存儲(chǔ)地址
  15. SOU       EQU 41h            ;欠壓設(shè)置,低8位存儲(chǔ)地址
  16. RLTH      EQU 42h            ;過(guò)壓設(shè)置,高2位存儲(chǔ)地址
  17. RLT       EQU 43h            ;過(guò)壓設(shè)置,低8位存儲(chǔ)地址

  18. ORG      0000H  
  19. GOTO     MAIN
  20. ORG      0004H
  21. GOTO     ADBEGIN
  22. ORG      0030H

  23. MAIN
  24. BCF      STATUS,RP0 ;BANK 0
  25. CLRF     GPIO
  26. MOVLW    07H
  27. MOVWF    CMCON      ;關(guān)閉比較器

  28. BSF      STATUS,RP0 ;BANK 1
  29. CALL     3FFH       ; 讀內(nèi)部振蕩出廠校準(zhǔn)字,返回值在W寄存器內(nèi)
  30. MOVWF    OSCCAL     ;校準(zhǔn)晶振
  31.   
  32. MOVLW    B'00001011';TRISIO 三態(tài)控制器
  33. MOVWF    TRISIO     ;設(shè)置TRISIO方向控制器,GP0,GP1,GP3為輸入口

  34. MOVLW    B'00010011'
  35. MOVWF    ANSEL      ;8分頻晶振,AN0AN1為模擬口,AN2AN3為數(shù)字口
  36.                   
  37. BANKSEL  OPTION_REG
  38. MOVLW    B'00000000';將預(yù)分頻器分配給TIMER0 模塊,2分頻
  39. MOVWF    OPTION_REG ;

  40. BANKSEL  INTCON
  41. MOVLW    B'10100000'  ;允許全局中斷,禁止外圍中斷,允許TRMO中斷,禁止GP2/INT外部中斷
  42. MOVWF    INTCON        ;禁止GPIO端口電平變化中斷,TMR0寄存器沒(méi)有溢出,未發(fā)生GP2/INT中斷
  43.                         ;GP5:GP0 引腳電平均未發(fā)生變化
  44. MOVLW    02H
  45. MOVWF    24H      ;AD通道設(shè)置選擇
  46. MOVLW    D'10'
  47. MOVWF    25H       ;過(guò)壓后延時(shí)采樣,10*90uS=900uS
  48. ;********************************************
  49. ;欠壓設(shè)置2.5V,5V路對(duì)應(yīng)值3.8V,15V路對(duì)應(yīng)值10V
  50. MOVLW    0002H
  51. MOVWF    SOUH
  52. MOVLW    0000H
  53. MOVWF    SOU
  54. ;*********************************************
  55. ;過(guò)壓設(shè)置值3.9V,5V路對(duì)應(yīng)值5.9V,15V路對(duì)應(yīng)15.9V
  56. MOVLW    0003H
  57. MOVWF    RLTH
  58. MOVLW    0020H
  59. MOVWF    RLT

  60. MOVLW    B'10000001'
  61. MOVWF    ADCON0     ;右對(duì)齊,參考電壓Vdd,模擬通道0
  62. BANKSEL  TMR0
  63. MOVLW    D'242'
  64. MOVWF    TMR0

  65. GOTO     $
  66. ;*********************************************
  67. ;定時(shí)中斷后開始AD轉(zhuǎn)換
  68. ADBEGIN
  69. BTFSC    INTCON,T0IF  ;是否是定時(shí)器TMR0中斷
  70. BANKSEL  ADCON0
  71. BSF      ADCON0,GO  ;開始轉(zhuǎn)換
  72. ADWAIT
  73. BTFSC    ADCON0,GO
  74. GOTO     ADWAIT        ;等待轉(zhuǎn)換完成
  75. ;**********************************************
  76. ;AD轉(zhuǎn)換后數(shù)據(jù)判斷處理
  77. READ
  78. BANKSEL  ADRESH        ;自動(dòng)設(shè)置存儲(chǔ)地址bank
  79. MOVF     ADRESH,W     ;讀電壓值高2位,
  80. CLRF     STATUS
  81. MOVWF    READH        ;讀到的高2位數(shù)據(jù)放到vrevh寄存器

  82. BANKSEL  ADRESL        ;自動(dòng)設(shè)置存儲(chǔ)地址bank
  83. MOVF     ADRESL,w      ;讀電壓低8位
  84. CLRF     STATUS
  85. MOVWF    READL
  86. ;*****************************************************
  87. LOWPOWER
  88. MOVF     SOU,W
  89. SUBWF    READL,W
  90. BTFSS    STATUS,C;沒(méi)有借位,跳過(guò)
  91. GOTO     JUMP1
  92. MOVF     SOUH,W
  93. CONTIUE1
  94. SUBWF    READH,W
  95. BTFSS    STATUS,C ;沒(méi)有借位,跳過(guò)
  96. GOTO     ALARM0

  97. OVERPOWER
  98. MOVF     RLT,W
  99. SUBWF    READL,W
  100. BTFSS    STATUS,C   ;沒(méi)有借位,跳過(guò)
  101. GOTO     JUMP2
  102. MOVF     RLTH,W
  103. CONTIUE2
  104. SUBWF    READH,W
  105. BTFSS    STATUS,C  ;;沒(méi)有借位,跳過(guò)
  106. GOTO     NORMAL
  107. GOTO     ALARM1
  108. ;*****************************************
  109. ;時(shí)間到,準(zhǔn)備選擇通道和賦值
  110. LOOP
  111. DECFSZ   24H,F
  112. GOTO     SKIP
  113. BANKSEL  ADCON0
  114. MOVLW    B'10000001'
  115. MOVWF    ADCON0     ;右對(duì)齊,參考電壓Vdd,模擬通道0
  116. MOVLW    D'2'
  117. MOVWF    24H
  118. GOON
  119. BCF      INTCON,T0IF;恢復(fù)定時(shí)器繼續(xù)判斷
  120. BANKSEL  INTCON
  121. BSF      INTCON,7
  122. BANKSEL  TMR0
  123. MOVLW    D'242'
  124. ADDWF    TMR0,F
  125. GOTO     $
  126. ;***************************************************
  127. ;子程序
  128. SKIP
  129. BANKSEL  ADCON0
  130. MOVLW    B'10000101'
  131. MOVWF    ADCON0     ;右對(duì)齊,參考電壓Vdd,模擬通道0
  132. GOTO     GOON
  133. JUMP1
  134. INCFSZ   SOUH,W
  135. GOTO     CONTIUE1
  136. JUMP2
  137. INCFSZ   RLTH,W
  138. GOTO     CONTIUE2

  139. NORMAL
  140. BANKSEL  GPIO
  141. BTFSC    22H,0    ;為0跳過(guò)
  142. GOTO     BACK
  143. BSF      GPIO,2   ;綠燈亮
  144. BCF      GPIO,4   ;紅燈滅
  145. BACK
  146. BCF      22H,0
  147. GOTO     LOOP
  148. ALARM0
  149. BSF      22H,0
  150. BANKSEL  GPIO
  151. BCF      GPIO,2   ;綠燈滅
  152. BSF      GPIO,4   ;紅燈亮
  153. GOTO     LOOP
  154. ALARM1
  155. DECFSZ   25H,F    ;為0則跳
  156. GOTO     LOOP
  157. BANKSEL  GPIO
  158. BSF      GPIO,5   ;關(guān)機(jī)
  159. BCF      GPIO,2   ;紅燈亮
  160. BSF      GPIO,4   ;綠燈滅
  161. GOTO     $

  162. END
復(fù)制代碼




作者: mickeyeva2    時(shí)間: 2017-5-5 15:03
感謝分享,
作者: lxz335    時(shí)間: 2017-12-1 13:32
樓主有沒(méi)有用c語(yǔ)言寫的啊
作者: mahn168    時(shí)間: 2017-12-24 15:45
好東西。收藏




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1