日志档案

发表于 2008-7-5 10:02:53

0

标签: 无标签

M8--ADC转换一例

.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写;
;
;恢复
;
;

系统分类: 单片机   |   用户分类: AVR单片机   |   来源: 整理   |   【推荐给朋友】

    阅读(98)    回复(0)  

投一票您将和博主都有获奖机会!