第 2 页,共 2 页12

mega8 iccavr的串口程序(已修正)-中断方式(简明版)

查询方式:串口查询方式 中断完整方式:串口中断完整方式 简明版:串口中断程序简明版 自己太撮了,网上找到的中断例程都看着挺混乱,自己写一个简单明了的吧。 这里程序只是为了验证一下串口中断,实用的程序参见。 大概步骤就是: 1、关闭中断; 2、初始化; 3、打开中断; 另外,将中断服务程序与相应的中断向量对应起来。 稍微有点不太一样的是发送中断。一般,可以通过向寄存器写数直接发送。这里,用中断发送有两个好处:省时间、容易操作。当发送数据时,打开发送寄存器空中断;发送完成,关闭该中断。 /******************************************/ /*         http://truemans.inf            */ /*         RS232通讯框架                  */ /*         作者:HB                        */ /*         2010年8月5日                   */ /*  目标MCU:MEGA8   晶振:内部晶振  8MHZ   */ /******************************************/ #include <iom8v.h> #include <macros.h> #define FOSC 8000000 //晶振8MHZ #define BAUDRATE 19200     //波特率 unsigned char dataout,datain; /*       字符输出函数       */ void _putchar(unsigned char c) {           while [...]

mega8 iccavr的串口程序(已修正)-查询方式

查询方式:串口查询方式 中断完整方式:串口中断完整方式 简明版:串口中断程序简明版 下边是查询方式的串口程序(uart、usart)。 从双龙的例程修改来的。验证好用! /******************************************/ /*             http://truemans.inf        */ /*             修改自双龙                 */ /*             RS232通讯框架              */ /*             作者:HB                    */ /*               2010年8月5日             */ /*  目标MCU:MEGA8   晶振:内部晶振  8MHZ   */ /******************************************/ #include <iom8.h> #define fosc 8000000 //晶振8MHZ #define baud 19200     //波特率 /*       字符输出函数       */ void _putchar(unsigned char c) {           while (!(UCSRA&(1<<UDRE)));      UDR=c;     } /*       字符输入函数       */    unsigned [...]

mega8不停复位的问题

好久没用mega8了。今天做一个控制,要重新捡起来。 刚开始就碰到问题了。 我使用串口程序测试一下: void main(void) { char temp; uart_init(); _puts("welcome!"); while(1) {   temp=_getchar();   if(0!=temp)      _putchar(temp);   if(‘a’==temp)      _puts("haha!"); } } 发现串口不断输出welcome! 肯定是单片机不停复位。 上百度Google了一下。问题发现了。 在使用progisp时,默认的熔丝设置中,看门狗(WDTON)默认打开的。 没有喂狗,程序当然会出问题。 重新写熔丝,去掉看门狗,一切正常!