四、举例 在开发AVR的I2C应用例程时,使用串口输出调试数据的方法介绍。 首先初始化UART。可以看出初始化UART只需要很少的几行代码,在完成程序调试后将可以将其删除。如果你的系统程序本身就需要使用串口,那么初始化UART就没有一行多余的代码了。 void uart_init(void) { UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE); UBRRL=(fosc/16/(baud+1))%256; UBRRH=(fosc/16/(baud+1))/256; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } 然后我们可以写一个putchar函数,或直接使用标准输入输出库中的putchar函数。 void putchar(unsigned char c) { while (!(UCSRA&(1<<UDRE))); UDR=c; } 接下来只要在需要调试的程序部分调用putchar函数就可以将一些需要查看的 MCU中硬件资源的数据和状态送PC机显示了。如要观察I2C中断程序中TWSR寄存器的值,只要在I2C中断程序中插入两行代码就可以了: #pragma interrupt_handler TWI_ISR:iv_TWI void TWI_ISR(void) { unsigned char temp = TestAck(); putchar(temp); switch (temp);//调试完后,本行改为switch(TestAck()), //删除上面两行就可以了。 { case SR_SLA_ACK: { fill_rece(); TWI_STATE=TWI_RD; Twi_ACK(); Break; } . . . } } 在PC机的超级终端软件中,设置波特率、数据格式后打开串口就可以观察TWSR寄存器的状态值了。 |