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

📄 asm.s43

📁 MSP430F22X单片机开发套件源代码
💻 S43
字号:
#include "msp430x22x4.h"
;此程序是用ADC10来测片内温度两极管的电压
;执行程序来查看ADC10MEM寄存器的值,
;并用V(temp)=0.00355*TempC+0.986公式来计算片子温度=>Tc~(0D34h*AD_value-0457h*800h)>>13
;最后温度值存在R6中,设置断点查看各个计数值
;                 MSP430F2274
;             -----------------
;         /|\|              XIN|-  
;          | |                 |
;          --|RST          XOUT|-
;            |                 |
;            |             P1.0|-->LED
        NAME    main
        
        PUBLIC  main

;----------------------------------------------------------------------------- 
;       MSP430F22x中断向量表        
;-----------------------------------------------------------------------------      
        ORG     0FFFEh
        DC16    main
	ORG     0FFEAh                        ;ADC10中断向量
        DC16    adc_isr
;------------------------------------------------------------------------------ 
        RSEG    CODE                          ;程序开始
;------------------------------------------------------------------------------             
main    MOV.W   #0600H,SP                     ;设置堆栈指针
stopWDT MOV.W	#WDTPW+WDTHOLD,&WDTCTL        ;关看门狗
	MOV.B	&CALBC1_1MHZ,&BCSCTL1         ;设定DCO为1MHZ
	MOV.B	&CALDCO_1MHZ,&DCOCTL 
        
        MOV.W   #INCH_10,&ADC10CTL1           ;选择第10通道,为片内温度传感器
        MOV.W   #REFON+SREF_1,&ADC10CTL0      ;打开1.5V正参考,地为负参考
        BIS.W   #ADC10ON+ADC10SHT_3+ADC10IE,&ADC10CTL0;打开ADC10内核,设定采样保持时间为64个ADC10CLK,使能ADC10中断
        BIS.W   #ENC+ADC10SC,&ADC10CTL0       ;启动AD转换
        EINT                                  ;使能总中断  
        BIS.W   #CPUOFF,SR                    ;进入低功耗0
        ;0D34*AD_value
        MOV.W   #0D34h,R5
        MOV.W   #0,R6                         ;R6保存乘法结果低位
        MOV.W   #0,R7                         ;R7保存乘法结果高位
add_loop
        ADD.W   R4,R6
        JNC     next
        INC.W   R7
next    DEC.W   R5
        JNZ     add_loop
        ;0457*800h
        MOV.W   #0457h,R8
        MOV.W   #0,R9
        MOV.B   #11,R10
left_mov
        RLA.W   R8                            ;R8保存移位低位  
        RLC.W   R9                            ;R9保存移位高位
        DEC.B   R10
        JNZ     left_mov
        ;0D34h*AD_value-0457h*800h
        SUB.W   R8,R6
        SUBC.W  R9,R7
        ;(0D34h*AD_value-0457h*800h)>>13
        MOV.B   #13,R10
rig_mov
        RRA.W   R7  
        RRC.W   R6                                                      
        DEC.B   R10
        JNZ     rig_mov                       ;最后温度值存在R6中
mainloop 
        BIS.W   #CPUOFF,SR                    ;进入低功耗0        
        NOP

;------------------------------------------------------------------------------
adc_isr;    
;------------------------------------------------------------------------------
        MOV.W   &ADC10MEM,R4                  ;将AD转换结果存入R4
        NOP
        BIC.W   #CPUOFF,0(SP)
        RETI                            		                                                   
        END     main

⌨️ 快捷键说明

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