>
您可以添加到网摘 让更多人关注此文章:
/***********************************************
**** AVR 模拟比较器使用范例 ***
**** 编译器:WINAVR20050214 ***
***********************************************/
/*
本程序简单的示范了如何使用ATMEGA16的模拟比较器
模拟比较器的设置
中断方式--较常用
查询方式不常用,检测ACO即可,可用作DELTA-SIGMA A/D CONVERTER,校正后精度比较高,但速度低,用汇编可以略为提高速度。
出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器
*/
#i nclude
#i nclude
#i nclude
#i nclude
/*
宏INTERRUPT 的用法与SIGNAL 类似,区别在于:
SIGNAL 执行时全局中断触发位被清除、其他中断被禁止
INTERRUPT 执行时全局中断触发位被置位、其他中断可嵌套执
另外avr-libc 提供两个API 函数用于置位和清零全局中断触发位,它们是经常用到的。
分别是:void sei(void) 和void cli(void) 由interrupt.h定义
注: 内部函数_delay_ms() 最高延时 262.144mS@1MHz
该函数可以实现较精确的定时,但用JTAG仿真时较麻烦---会进入机器码窗口(Disassembeler).注意跳开该语段。
一旦JTAG仿真进入该内部函数语句,会变得像"死机"一样(其实在运行中),可以先[break],然后在后面的C语句设[breakpoint],[RUN]跳过