找回密码
 立即注册

QQ登录

只需一步,快速开始

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

PIC12F675两通道的AD转换的汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:137190 发表于 2016-9-12 00:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整程序下载: PIC12F675两通道的AD转换的汇编程序.zip (1.81 KB, 下载次数: 50)

  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位数据
  13. READL     EQU 2Bh            ;读到的低8位数据
  14. SOUH      EQU 40h            ;欠压设置,高2位存储地址
  15. SOU       EQU 41h            ;欠压设置,低8位存储地址
  16. RLTH      EQU 42h            ;过压设置,高2位存储地址
  17. RLT       EQU 43h            ;过压设置,低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      ;关闭比较器

  28. BSF      STATUS,RP0 ;BANK 1
  29. CALL     3FFH       ; 读内部振荡出厂校准字,返回值在W寄存器内
  30. MOVWF    OSCCAL     ;校准晶振
  31.   
  32. MOVLW    B'00001011';TRISIO 三态控制器
  33. MOVWF    TRISIO     ;设置TRISIO方向控制器,GP0,GP1,GP3为输入口

  34. MOVLW    B'00010011'
  35. MOVWF    ANSEL      ;8分频晶振,AN0AN1为模拟口,AN2AN3为数字口
  36.                   
  37. BANKSEL  OPTION_REG
  38. MOVLW    B'00000000';将预分频器分配给TIMER0 模块,2分频
  39. MOVWF    OPTION_REG ;

  40. BANKSEL  INTCON
  41. MOVLW    B'10100000'  ;允许全局中断,禁止外围中断,允许TRMO中断,禁止GP2/INT外部中断
  42. MOVWF    INTCON        ;禁止GPIO端口电平变化中断,TMR0寄存器没有溢出,未发生GP2/INT中断
  43.                         ;GP5:GP0 引脚电平均未发生变化
  44. MOVLW    02H
  45. MOVWF    24H      ;AD通道设置选择
  46. MOVLW    D'10'
  47. MOVWF    25H       ;过压后延时采样,10*90uS=900uS
  48. ;********************************************
  49. ;欠压设置2.5V,5V路对应值3.8V,15V路对应值10V
  50. MOVLW    0002H
  51. MOVWF    SOUH
  52. MOVLW    0000H
  53. MOVWF    SOU
  54. ;*********************************************
  55. ;过压设置值3.9V,5V路对应值5.9V,15V路对应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转换
  68. ADBEGIN
  69. BTFSC    INTCON,T0IF  ;是否是定时器TMR0中断
  70. BANKSEL  ADCON0
  71. BSF      ADCON0,GO  ;开始转换
  72. ADWAIT
  73. BTFSC    ADCON0,GO
  74. GOTO     ADWAIT        ;等待转换完成
  75. ;**********************************************
  76. ;AD转换后数据判断处理
  77. READ
  78. BANKSEL  ADRESH        ;自动设置存储地址bank
  79. MOVF     ADRESH,W     ;读电压值高2位,
  80. CLRF     STATUS
  81. MOVWF    READH        ;读到的高2位数据放到vrevh寄存器

  82. BANKSEL  ADRESL        ;自动设置存储地址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. ;时间到,准备选择通道和赋值
  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;恢复定时器继续判断
  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   ;关机
  159. BCF      GPIO,2   ;红灯亮
  160. BSF      GPIO,4   ;绿灯灭
  161. GOTO     $

  162. END
复制代码



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

使用道具 举报

沙发
ID:147640 发表于 2017-5-5 15:03 | 只看该作者
感谢分享,
回复

使用道具 举报

板凳
ID:247984 发表于 2017-12-1 13:32 | 只看该作者
楼主有没有用c语言写的啊
回复

使用道具 举报

地板
ID:266068 发表于 2017-12-24 15:45 | 只看该作者
好东西。收藏
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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