wordpress网站入口,qq是哪个公司开发出来的,摄影工作室建设,池州公司做网站代码#xff1a;
/*《AVR专题精选》随书例程2.编程技巧项目#xff1a;不对变量进行初始化文件#xff1a;main.c说明#xff1a;演示不对变量进行默认初始化的方法。在proteus仿真例程中#xff0c;按下按键#xff0c;就可以看到两个变量输出结果的变化。作者#xf…代码
/*《AVR专题精选》随书例程2.编程技巧项目不对变量进行初始化文件main.c说明演示不对变量进行默认初始化的方法。在proteus仿真例程中按下按键就可以看到两个变量输出结果的变化。作者邵子扬时间2012年12月12日*/// 串口波特率
#define BAUDRATE 9600UL// 系统时钟频率
#define F_CPU 8000000UL#include avr/io.h
#include util/delay.h
#include stdio.h// 变量cnt1声明noinit属性不会进行初始化
char cnt1 __attribute__ ((section (.noinit)));
// 变量cnt2会进行初始化
char cnt2;// 串口输出缓冲区
char s[20];// 串口读写
#define UART_read() UDR
#define UART_write(dat) UDR dat// 串口初始化
void UART_init()
{unsigned int UBRRREG;UBRRREG F_CPU / ( 8 * BAUDRATE ) - 1;UBRRH UBRRREG / 256;UBRRL UBRRREG % 256;UCSRA ( 1 U2X );UCSRB ( 1 TXEN );UCSRC (1 URSEL ) | ( 1 UCSZ1 ) | ( 1 UCSZ0 );
}void UART_puts( char *s )
{while( *s ){UART_write( *s );s;while( !( UCSRA (1 TXC )) );UCSRA | ( 1 TXC );}
}int main()
{UART_init();PORTD (1 PD2);while(1){_delay_ms(500); // 延时// 将两个变量的值转换为字符串sprintf(s, %02X, %02X\n\r, cnt1, cnt2);// 输出到串口UART_puts(s);// 变量递增cnt1;cnt2;// 如果按键按下if (!(PIND ( 1 PD2))){// 等待释放按键防止抖动和重复进入while(!(PIND ( 1 PD2)));// 跳转到0x0000, 相当于软复位// 对应的proteus仿真图中还有RESET复位按键可以对比// 效果是一样的(*((void(*)(void))(0)))();}}return 0;
}仿真效果图;