找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 8172|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:137190 發(fā)表于 2016-9-12 00:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
完整程序下載: PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序.zip (1.81 KB, 下載次數(shù): 51)

  1. ;程序功能:上電開機:PIN5為高電平,綠燈亮;PIN2,PIN3為低電平,紅燈滅;
  2. ;        輪流檢測PIN6,PIN7腳電平,欠壓3.9V,10V,紅燈亮,綠燈滅,過壓5.9V,15.9V
  3. ;        紅燈亮,綠燈滅,alram為TTL高電平,過壓鎖死
  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位存儲地址
  15. SOU       EQU 41h            ;欠壓設(shè)置,低8位存儲地址
  16. RLTH      EQU 42h            ;過壓設(shè)置,高2位存儲地址
  17. RLT       EQU 43h            ;過壓設(shè)置,低8位存儲地址

  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寄存器沒有溢出,未發(fā)生GP2/INT中斷
  43.                         ;GP5:GP0 引腳電平均未發(fā)生變化
  44. MOVLW    02H
  45. MOVWF    24H      ;AD通道設(shè)置選擇
  46. MOVLW    D'10'
  47. MOVWF    25H       ;過壓后延時采樣,10*90uS=900uS
  48. ;********************************************
  49. ;欠壓設(shè)置2.5V,5V路對應(yīng)值3.8V,15V路對應(yīng)值10V
  50. MOVLW    0002H
  51. MOVWF    SOUH
  52. MOVLW    0000H
  53. MOVWF    SOU
  54. ;*********************************************
  55. ;過壓設(shè)置值3.9V,5V路對應(yīng)值5.9V,15V路對應(yīng)15.9V
  56. MOVLW    0003H
  57. MOVWF    RLTH
  58. MOVLW    0020H
  59. MOVWF    RLT

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

  65. GOTO     $
  66. ;*********************************************
  67. ;定時中斷后開始AD轉(zhuǎn)換
  68. ADBEGIN
  69. BTFSC    INTCON,T0IF  ;是否是定時器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        ;自動設(shè)置存儲地址bank
  79. MOVF     ADRESH,W     ;讀電壓值高2位,
  80. CLRF     STATUS
  81. MOVWF    READH        ;讀到的高2位數(shù)據(jù)放到vrevh寄存器

  82. BANKSEL  ADRESL        ;自動設(shè)置存儲地址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;沒有借位,跳過
  91. GOTO     JUMP1
  92. MOVF     SOUH,W
  93. CONTIUE1
  94. SUBWF    READH,W
  95. BTFSS    STATUS,C ;沒有借位,跳過
  96. GOTO     ALARM0

  97. OVERPOWER
  98. MOVF     RLT,W
  99. SUBWF    READL,W
  100. BTFSS    STATUS,C   ;沒有借位,跳過
  101. GOTO     JUMP2
  102. MOVF     RLTH,W
  103. CONTIUE2
  104. SUBWF    READH,W
  105. BTFSS    STATUS,C  ;;沒有借位,跳過
  106. GOTO     NORMAL
  107. GOTO     ALARM1
  108. ;*****************************************
  109. ;時間到,準(zhǔn)備選擇通道和賦值
  110. LOOP
  111. DECFSZ   24H,F
  112. GOTO     SKIP
  113. BANKSEL  ADCON0
  114. MOVLW    B'10000001'
  115. MOVWF    ADCON0     ;右對齊,參考電壓Vdd,模擬通道0
  116. MOVLW    D'2'
  117. MOVWF    24H
  118. GOON
  119. BCF      INTCON,T0IF;恢復(fù)定時器繼續(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     ;右對齊,參考電壓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跳過
  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)機
  159. BCF      GPIO,2   ;紅燈亮
  160. BSF      GPIO,4   ;綠燈滅
  161. GOTO     $

  162. END
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:147640 發(fā)表于 2017-5-5 15:03 | 只看該作者
感謝分享,
回復(fù)

使用道具 舉報

板凳
ID:247984 發(fā)表于 2017-12-1 13:32 | 只看該作者
樓主有沒有用c語言寫的啊
回復(fù)

使用道具 舉報

地板
ID:266068 發(fā)表于 2017-12-24 15:45 | 只看該作者
好東西。收藏
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表