.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条评论)
登录后参与讨论