📄 adc_12bit_intertrupt.asm
字号:
chip sn8p2758
.data
adc_hi ds 1
adc_low ds 1
acc_buf ds 1
pflag_buf ds 1
.code
org 00h
jmp main
org 08h
jmp isr
org 10h
main:
b0bset fadenb //Enable ADC circuit
call delay100us //Delay 100us
mov a,#0feh
b0mov p4ur,a // Disable P4.0 pull-up resistor
b0bclr fp40m // Set P40 as input pin
mov a,#01h
b0mov p4con,a // Set P40 as pure analog input
mov a,#60h // To set 12-bit and Fcpu/1.
b0mov adr,a
mov a,#90h // Enable ADC and set AIN0 input
b0mov adm,a
b0bset fadcien // Enable ADC interrupt service
b0bclr fadcirq // Clear ADC interrupt request flag
b0bset fgie // Enable GIE
b0bset fads // To start conversion
//===============================================================
//
// User code
//
//===============================================================
jmp main
//======================================================
// interrupt code
//======================================================
isr:
mov acc_buf,a // Push ACC to buffer
mov a,pflag
b0mov pflag_buf,a // Push PFLAG to buffer
isr_adc:
b0bts1 fadcien // Check adcien
jmp isr90
b0bts1 fadcirq // Check adcirp
jmp isr90
b0bclr fadcirq
b0mov a,adb
b0mov adc_hi,a // To get ADC transform data bit11 ~ bit4
b0mov a,adr
and a,#0fh
b0mov adc_low,a // To get ADC transform data bit3 ~ bit0
isr90:
mov a,pflag_buf
b0mov pflag,a // Pop pflag_buf to pflag
mov a,acc_buf // Pop acc_buf to acc
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -