⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc12_uart.s43

📁 对于MSP430F169
💻 S43
字号:
;采用单通道单次转换方式,对接口板上的一路模拟信号(0~3.3V可调电压)进行A/D转换,
;并将12位转换结果通过串口发到PC机,由PC机的串口助手显示出来。
;MSP430F169,采用了P1中断来触发AD转换,即按一次P1.0启动一次转换,并且将转换结果通过串口发送出去。
;设置采样时间SHT0_2,设置为软件启动,同时由于采样此电压信号,不需要连续检测,因此采用单通道(通道1)单次转换。
;由于电压范围在0~3.3V,大于内部的参考电压源1.5V和2.5V,因此采用外部参考电压源,采用ACLK默认时钟32768HZ。
#include "msp430.h"  ;查询方式
NAME main
PUBLIC main
ORG 0FFFEh
DC16 init
ORG 0FFE0h+PORT1_VECTOR   ;用键盘P1.0中断启动AD
DC16 INTP1
RSEG CSTACK
RSEG CODE                                                                                                                                  
init MOV #SFE(CSTACK),SP
main: NOP
      MOV.W #WDTPW+WDTHOLD,&WDTCTL
      CALL #P1INIT    ;P1初始化
      CALL #ADINIT   ;AD初始化
      CALL #UART0_INIT   ;串口初始化
      MOV #GIE,SR         ;开中断
      JMP $
P1INIT:
      BIS.B #BIT0,&P1IE
      BIS.B #BIT0,&P1IES
      RET     
;CLKINIT:
     ;BIS.B #XTS,&BCSCTL1;
     ;BIS.B #SELS+DIVS_3,&BCSCTL2
     ;RET     
ADINIT: 
      MOV #SHT0_2+ADC12ON,&ADC12CTL0 ; Sampling time, ADC12 on
      ;MOV #SHT0_0+ADC12ON,&ADC12CTL0
      ;MOV #SHT0_15+ADC12ON,&ADC12CTL0
      ;MOV #SHT0_15+SHT1_15+ADC12ON,&ADC12CTL0
      MOV #SHP,&ADC12CTL1              ; Use sampling timer
      ;BIS #ADC12SSEL_2,&ADC12CTL1
      BIS.B #BIT0,P6SEL                     ; select P6.0
      BIS.B #SREF_2+INCH_0,&ADC12MCTL0  ;channel 1, external ref
      BIS #ENC,&ADC12CTL0                 ;AD enable
      RET
UART0_INIT:
      BIS.B #SWRST,&U0CTL
      BIS.B #BIT4+BIT5,&P3SEL
      BIS.B #SPB+CHAR,&U0CTL   ;2 bits stop, no pena
      ;BIS.B #PENA+PEV+SPB+CHAR,&U0CTL;even pena
      ;BIS.B #PENA+SPB+CHAR,&U0CTL;odd pena
      MOV.B #0x10,&U0TCTL         ;ACLK
      BIS.B #URXEIE,&U0RCTL
      MOV.B #00H,&U0BR1   ;9600sps
      MOV.B #03H,&U0BR0
      MOV.B #49H,&U0MCTL
      BIS.B #UTXE0+URXE0,&ME1
      BIC.B #SWRST,&U0CTL
      RET
INTP1:
     CALL #DELAY   ;  防止键盘抖动
     BIC.B #BIT0,&P1IFG
     BIS.W  #ADC12SC,&ADC12CTL0     ; Start sampling/conversion
CONAD:
      BIT #BIT0,&ADC12IFG;    check if finish converting
      JZ CONAD
      MOV &ADC12MEM0,R5
      MOV R5,R6
      MOV #8, R4
CYCLE:
      RRA R5                ;右移8位
      DEC R4
      JNZ CYCLE
TCHK BIT.B #UTXIFG0,&IFG1    ; send the higher 4 bits
      JZ TCHK
      MOV.B R5,&U0TXBUF
Tchk2  BIT.B #UTXIFG0,&IFG1      ;send the lower 8 bits
      JZ Tchk2
      MOV.B R6,&U0TXBUF
      RETI
DELAY:
     MOV #0x4000,R4
WW:  DEC R4
     JNZ WW
     RET
     END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -