单片机
文章平均质量分 64
huangxb_csu
这个作者很懒,什么都没留下…
展开
-
avr单片机INT0模拟代码
#include #include #include /* 主函数 */int main(void){ DDRA = 0x00; /*方向输入*/ PORTA = 0xFF; /*打开上拉*/ DDRB = 0xFF; /*方向输出*/ PORTB = 0xFF; /*电平设置*/ DDRC = 0x00; /*方向输入*/原创 2008-10-22 17:52:00 · 1337 阅读 · 0 评论 -
AVR-GCC里定义的API
嵌入式编程的代码可以简单地分为两部分,一是与硬件无关的算法部分,对其编程与普通C编程没有区别;二是与硬件相关的寄存器/端口操作部分。不同的MCU实现方法各有不同。在AVR-GCC里则通过一系列的API来解决。当然,用户也可以定义自己的API。在此简单地介绍目前AVR-GCC里定义的API,以及AVR-GCC的工作过程。一.应用程序启动过程(Start Up)标准库文件包含一个启转载 2008-10-23 15:08:00 · 1175 阅读 · 0 评论 -
AVR-GCC程序存储器api
程序存储器如果要将数据(如常量,字符串,等等)放在FLASH里,用户需要指明数据类型__ATTR_PROGMEM__。为了方便使用,AVR-GCC定义了一些更直观的符号,如下表所示。类型数据定义typedef void PROGMEM prog_void typedef char PROGMEM prog_char typedef unsigned char PROGMEM prog_u原创 2008-10-24 10:31:00 · 2686 阅读 · 1 评论 -
AVR-GCC的I/O端口API
1. BV用法:BV(pos); #define _BV(bit) (1 说明:将位定义转换成屏蔽码(MASK)。与头文件io.h里的位定义一起使用。例如,置位WDTOE和WDE可表示为“BV(WDTOE) | BV(WDE)”2.bit_is_clear用法:uint8_t bit_is_clear(uint8_t port, uint8_t bit);描述:如果port的bit位清零则返回1。转载 2008-10-24 16:22:00 · 2155 阅读 · 0 评论 -
avr-gcc的EEPROM的api
EEPROMAVR内部有EEPROM,但地址空间与SRAM的不相同。在访问时必须通过I/O寄存器来进行。EEPROM API封装了这些功能,为用户提供了高级接口。使用时要包含eeprom.h。在程序里定义EEPROM数据的例子如下:static uint8_t variable_x __attribute__((section(".eeprom"))) = 0;不同的AVR器件具有不同数目的EEP原创 2008-10-24 16:36:00 · 2859 阅读 · 0 评论 -
avr单片机的进入各种睡眠模式,并使用INT2唤醒代码
#include #include #include #include /* 外部INT2处理函数 *//* 该函数可以使用调试器调试,改变PORTB的PINB2的值从而触发中断 */SIGNAL(SIG_INTERRUPT2){ PORTB ^= (1 }/*主函数*/int main(void) { DDRA = 0x00; /*方向输入*/ POR原创 2008-10-22 17:44:00 · 6154 阅读 · 0 评论 -
avr的I/O口使用示例
#include #include /* 实现跑马灯效果 */int main(void){ DDRB = 0xFF; /* 设置端口为输出 */ PORTB = 0x00; /* 端口清零 */ int i = 0; while (1) { outp(1 i++; /* 循环 */ if原创 2008-10-30 18:55:00 · 767 阅读 · 0 评论 -
avr的eeprom的使用示例
#include #include #include /*EEPROM读取函数*//*addr:地址;number:长度;p_buff:读出数据存放指针*/void my_eeprom_read(unsigned char *p_buff, unsigned char addr, unsigned char number){ EEARH = 0x00; /* 高地址位为0 */原创 2008-10-30 17:52:00 · 2336 阅读 · 0 评论