6876|0

3

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

看看我初学者的程序,做一个UART中断收发。错在何处 [复制链接]

//=============头文件=========== #include //chip----ATMEGA64 #include #include #include #include //========================================== void init_timer0(void); void init_uart0(void); void init_uart1(void); void init_port(void); //========================================= //RAM define. unsigned char Buf0[10]; unsigned char count=0; //================================================================== //================================================================== //=============定时器T0初始化函数============ void init_timer0(void) { TCCR0 = 0x00; //stop ASSR = 0x00; //set async mode TCNT0 = 0x70; //set count OCR0 = 0x90; TCCR0 = 0x06; //start timer } /*****************************************************/ //calculating register UBRR reult . //algorithm:if(u2x=0) ubrr=fosc/(16*baud)-1. // if(u2x=1) ubrr=fosc/(8*baud)-1 . //UART0初始化函数,晶体:7.37258M //==================== void init_uart0(void) { UCSR0B=(1<=UART_TX0_BUFFER_SIZE) TxBuf0_begin=0; } }*/ //=================================== //UART0接收中断处理函数 #pragma interrupt_handler uart0_rx_isr:iv_USART0_RX void uart0_rx_isr(void) { Buf0[count]=UDR0; count++; if(count>=10) count=0; } /* RxBuf0[RxBuf0_end]=UDR0; RxBuf0_end++; if(RxBuf0_end>=UART_RX0_BUFFER_SIZE) RxBuf0_end=0; }*/ /*************************************************************/ //calculating register UBRR reult . //algorithm:if(u2x=0) ubrr=fosc/(16*baud)-1. // if(u2x=1) ubrr=fosc/(8*baud)-1 . //UART1(PC)初始化函数,晶体:7.37258M. //=================================== void init_uart1(void) { UCSR1B=(1<=UART_TX1_BUFFER_SIZE) TxBuf1_begin=0; } }*/ //================================= //UART1(GPS)接收中断处理函数 /*#pragma interrupt_handler uart1_rx_isr:iv_USART1_RXC void uart1_rx_isr(void) { RxBuf1[RxBuf1_end]=UDR1;RxBuf1_end++; if(RxBuf1_end>=UART_RX1_BUFFER_SIZE) RxBuf1_end=0; }*/ /*************************************************************/ void init_port(void) { DDRA = 0x00; //INPUT DDRB = 0x00; //INPUT DDRC = 0x00; //INPUT DDRD = 0x00; //INPUT DDRE = 0x00; //INPUT DDRF = 0x00; //INPUT DDRG = 0x00; //INPUT PORTA = 0xFF; //上拉电阻 PORTB = 0xFF; PORTC = 0xFF; PORTD = 0xFF; PORTE = 0xFF; PORTF = 0xFF; PORTG = 0xFF; // DDRG |= BIT(RUN); //RUN // DDRB |= BIT(LED_WXCHCY); // DDRG |= BIT(LED_GPS); } /**************************************************************/ //===========================================================// void main(viod) { init_uart0(); // init_uart1(); // init_timer0(); init_port(); MCUCR=0x00; TIMSK=0x00; TIMSK |= BIT(TOIE0); // SEI(); UDR0=Buf0[count]; while(1) {; } }
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表