原创 M8--ADC转换一例

2008-7-5 10:02 2765 3 3 分类: MCU/ 嵌入式
.org 0x0000
rjmp reset
 
.org 0x000E
rjmp ADC_ISR
 
reset:
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
 
ldi r16, 0xFF
out DDRD, r16
 
ldi r16, 0
out ADMUX, r16
ldi r16, 0b11101101
out ADCSR, r16
 
sei
 
loop:
rjmp loop
 
ADC_ISR:
push r16
in r16, SREG
push r16
push r17
 
in r16, ADCL
in r17, ADCH
lsr r17
ror r16
lsr r17
ror r16

com r16
out PortD, r16

pop r17
pop r16
out SREG, r16
pop r16
reti



; ADC转换中断向量
; 堆设定

;
;
;
;
;
;
; 设置PortD输出
;
;
;  写零
; 选择ADC0通道
; 从左到右: ADC使能,启动转换,自由振荡的方式,
;
;
; 开中断
;循环
;
;
;
; Here it is, our ISR!
; save r16
; use r16 16 to save SREG
; (push both on stack)
; also save r17
;
; 先取得最后ADC结果,低字节,
;
; shift ADC result right (2 bits)
; 转移它入r17
;
;两次
;
; PortD写;
;
;恢复
;
;

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条