程序如下:
//包含所需头文件
#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>
/*------宏定义------*/
#define uchar unsigned char
#define uint unsigned int
#define BIT(x) (1<<(x))
#define NOP() asm("nop")
#define WDR() asm("wdr")
uchar dat ;
//端口初始化
void port_init(void)
{
PORTA = 0x3C;
DDRA = 0x3C;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x03;
DDRD = 0x01;
}
//串口通信初始化
void usart_init(void)
{
UCSRB = 0x00;//禁止中断
UCSRA = 0x02;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x8F;
UBRRH = 0x00;
UCSRB = 0x98;
}
//串行接收结束中断服务程序
//#pragma interrupt_handler usart_rx_isr:12
//void usart_rx_isr(void)
SIGNAL(SIG_USART_RECV)
{
dat = UDR ;
}
//
void Send()
{
uchar k = 1 ;
while(!UCSRA & (1 << UDRE));
UDR = k ;
}
void init_devices(void)
{
cli(); //禁止所有中断
MCUCR = 0x00;
MCUCSR = 0x80;//禁止JTAG
GICR = 0x00;
port_init();
usart_init();
sei();//开全局中断
}
//主函数
int main(void)
{
init_devices();
//在这继续添加你的代码
while(1)
{
NOP();
NOP();
NOP();
NOP();
NOP();
Send();
}
return 0;
}
我都换了两片M16了
请高手指教一下?:'( :'( :Q
此帖出自
小平头技术问答
看看这个例程 第6讲
一周热门 更多>