|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2007-7-2 08:49:10
|
显示全部楼层
马老师我在主程序一直写发送一个数据,一共发送一千个,但是这期间我从上位机向AVR128发送数据,但是在这一千数据发送中,是不响应接受中断的,这是为什么??
void init_devices(void)
{
CLI();
XDIV = 0x00;
XMCRA = 0x00;
port_init();
uart0_init();
MCUCR =0x00;
EICRA =0x00;
EIMSK =0x50;//EIMSK =0x50;
EICRB =0x11;//EICRB =0x11;
TIMSK =0x05;// TIMSK =0x05;
ETIMSK =0x04;
SEI();
}
//////////////////////////////////////////////////////////////////
//
//LCD切换显示子程序
//
//////////////////////////////////////////////////////////////////
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0x16; //set count
OCR0 = 0xEA;
//TCCR0 = 0x07;//start timer
}
/*/////////////////////////////////////////////////////////////
//串口初始化程序
//
//发送子程序
//
////////////////////////////////////////////////////////////*/
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x19; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x98;
}
//
void USART_Transmit(unsigned int data)
{ //SEI();
while(!(UCSR0A&0x20)); //等待发送缓冲器空,UDRE0数据寄存器空标志
UDR0=data; //发送数据,将被发送数据付给UDR0数据寄存器
}
//
#pragma interrupt_handler uart0_rx_isr:19
void uart0_rx_isr(void)
{
unsigned char i;
v1++;
i=UDR0;
USART_Transmit(v1);
}
///////////////////////////////////////////////////////////////////////////////
//
//TIMER3 initialize - prescale:1024
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1Sec
// actual value: 1.000Sec (0.0%)
//
///////////////////////////////////////////////////////////////////////////////
//
//
void main(void)
{
int sum;
int i;
qwer=5;
v1=0;
sum=0;
init_devices();
while(1)
{
if(sum<1000)
{
USART_Transmit('0');
sum++;}
}
} |
|