本帖最后由 citymaster 于 2014-8-12 01:56 编辑
情况是这样的,问题一,我的 贴片avr m16 io口输出不正常,只有PC2-PC5不能正常控制,其他正常;
问题二,我的 直插avr m16能与PC正常通信,同样的程序下到 贴片avr m16却显示不正常,没有乱码,就是该显示的0A1B和换行都能显示,但一下显示0 一下B,一下换行,猜测应该是显示不全造成。
综上两点,我的贴片m16坏了吗?还是小弟某些操作有误引起的呢?
补充:
//与PC机串口通信代码:
#define fosc 1000000
void init_USART(uint baud)//初始化设置
{
uint a;
DDRD&=~BIT(0);
DDRD|=BIT(1);
UCSRC=0X86;
a=fosc/16/baud-1;
UBRRL=a%256;
UBRRH=a/256;
UCSRB=0X98;
}
void send_data(uchar data)
{
while(!(UCSRA&BIT(5)));//数据寄存器空判断寄存器
UDR=data; //给数据寄存器存入数据
while(!(UCSRA&BIT(6)));//数据发送结束标志BIT(6)
UCSRA|=BIT(6); //因为没有进入发送结束中断,所以BIT(6)要通过写1清零
}
void main(void)
{
init_USART(9600);
while(1)
{
send_data(48); //0
send_data(65); //A
send_data(1+48); //1
send_data(1+65); //B
send_data('\n');
delay_nms(500);
}
}
|