atmega128 bootloader

  • z9_212616
    了解作者
  • C/C++
    开发工具
  • 121.7KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-27 18:37
    上传日期
atmega128 bootloader 源代码,通过串口下载/更行程序。适合嵌入式/单片机 硬件及软件工程师参考
usartSelfPRG.rar
内容介绍
/******************************************************************** COM0:GPRS COM1:parameter SETTING ********************************************************************/ /********************************************************************/ /*! * Library Includes */ /********************************************************************/ #include<avr/io.h rel='nofollow' onclick='return false;'> #include<avr/interrupt.h rel='nofollow' onclick='return false;'> #define F_CPU 7372800UL #include<util/delay.h> #include<avr/wdt.h rel='nofollow' onclick='return false;'> /********************************************************************/ /*! * Includes */ /********************************************************************/ #include"datentypen.h" #include"RS232.h" /********************************************************************/ /*! * Initialisation of Rs232 :COM0 AND COM1 : 9600 */ /********************************************************************/ void RS232_Init() { //COM0 ~ 9600 bps with u2x @7.3728Mhz com0 UBRR0H = 0x00; UBRR0L = 0x5f; ///UBRR0L = 0x07; SBIT(UCSR0A,U2X0)=1; UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); UCSR0C = (1<<USBS0)|(3<<UCSZ00); //usart1 9600 UBRR1H =0X00; UBRR1L =0X5F; ///UBRR1L =0X07; SBIT(UCSR1A,U2X1)=1; UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1); UCSR1C = (1<<USBS1)|(3<<UCSZ10); #ifdef COM_485_ON RECEIVE_ON_485; #endif } /********************************************************************************** RS232 send one byte: commando: the data should be sent com_sel: select the com to send data gprs_function: COM0 parameter_setting: COM1 **********************************************************************************/ void rs232_tx_byte (unsigned char commando , unsigned char com_sel) { unsigned char command; command = commando; if(com_sel==gprs_function) { ///while( receive_status_com0 ); UDR0 = command; while( !SBIT( UCSR0A,TXC0 ) ); SBIT( UCSR0A,TXC0 ) = 1; } else { #ifdef COM_485_ON SEND_ON_485; #endif ///while( receive_status_com1 );// Waits for end of RS232-Communication UDR1 = command; while( !SBIT( UCSR1A,TXC1 ) ); SBIT( UCSR1A,TXC1 ) = 1; #ifdef COM_485_ON RECEIVE_ON_485; #endif } } /********************************************************************************** RS232 send CHAR string: pString: the char string should be sent com_sel: select the com to send data gprs_function: COM0 parameter_setting: COM1 **********************************************************************************/ void rs232_tx_string(char * pString , unsigned char com_sel){ unsigned short i = 0; if(com_sel==gprs_function) { while(pString[i]) { #if 1 wdt_reset(); /*zwg: 复位一次看门狗*/ #endif UDR0= pString[i++]; while( !SBIT( UCSR0A,TXC0 ) ); SBIT( UCSR0A,TXC0 ) = 1; } } else{ #ifdef COM_485_ON SEND_ON_485; #endif while(pString[i]) { UDR1= pString[i++]; while( !SBIT( UCSR1A,TXC1 ) ); SBIT( UCSR1A,TXC1) = 1; } #ifdef COM_485_ON RECEIVE_ON_485; #endif } } /*********************************************************************************************************** RS232 receive CHAR string: n_ms: the data wait for before receive the first data com_sel: select the com to send data gprs_function: COM0 parameter_setting: COM1 ***********************************************************************************************************/ unsigned char rs232_rx_string( unsigned int n_ms , unsigned char com_sel){ unsigned int i, time_counter; time_counter=n_ms/5; if(com_sel==gprs_function){ // rs232_receive_long_com0=0; //COM0 receive_status_com0=0; for(i=0;i<time_counter;i++) { _delay_ms(5); if(receive_status_com0) break; #if 1 wdt_reset(); #endif } if(receive_status_com0) { while(1) { receive_status_com0=0; #if 1 wdt_reset(); #endif _delay_ms(5); if(receive_status_com0==0) break; } receive_status_com0=0; return 0xaa; } else return 0x55; } //------------------------------------------------------------------------------------- else { //COM1 //rs232_receive_long_com1=0; #ifdef COM_485_ON RECEIVE_ON_485; #endif receive_status_com1=0; for(i=0;i<time_counter;i++){ _delay_ms(5); if(receive_status_com1) break; #if 1 wdt_reset(); #endif } if(receive_status_com1){ while(1){ receive_status_com1=0; #if 1 wdt_reset(); #endif _delay_ms(5); if(receive_status_com1==0) break; } receive_status_com1=0; return 0xaa; } else return 0x55; } } /*********************************************************************************************************** ??????? com_sel: select the com to send data gprs_function: COM0 buffer parameter_setting: COM1 buffer ***********************************************************************************************************/ void clear_rx_buffer (unsigned char counter,unsigned char com_sel){ cli(); unsigned char i; if(com_sel==gprs_function){ rs232_receive_long_com0=0; for(i=0;i<counter;i++) rs232_buffer_rx_com0[i]=0; } else{ rs232_receive_long_com1=0; for(i=0;i<counter;i++) rs232_buffer_rx_com1[i]=0; } sei(); } /*********************************************************************************************************** com0 interrupt ***********************************************************************************************************/ ISR( USART0_RX_vect ) { rs232_buffer_rx_com0[rs232_receive_long_com0] = UDR0; rs232_receive_long_com0++; if(rs232_receive_long_com0>=com0RxBufferLong) rs232_receive_long_com0=0; receive_status_com0=0xaa; }//End ISR /*********************************************************************************************************** com0 interrupt ***********************************************************************************************************/ ISR( USART1_RX_vect ) { rs232_buffer_rx_com1[rs232_receive_long_com1] = UDR1; rs232_receive_long_com1++; if(rs232_receive_long_com1>=com1RxBufferLong) rs232_receive_long_com1=0; receive_status_com1=0xaa; }//End ISR
评论
    相关推荐
    • 单片机课件
      单片机的课件及例题, 单片机的课件及例题, 单片机的课件及例题, 单片机的课 件及例题,
    • 爱上单片机
      一本电子爱好者都能看懂,会边看边笑的单片机入门书籍,作者杜洋曾在《无线电》上发表过“趣味单片机制作专题”、“单片机编程魔法学校”等深受读者喜爱、让无数单片机入门者热血沸腾的系列文章。本书通过生动的语言...
    • 单片机资料
      内含30个单片机应用开发的资料,包括配套单片机入门PPT。
    • 单片机课件
      单片机课的课件,对单片机的基础进行了全面的概述,也有非常精细的指导。
    • 单片机工具
      单片机工具 供单片机学习使用 免费资源 日后还会有更多资源 请联系我
    • 单片机
      单片机c 和汇编程序
    • 单片机课件
      单片机课件 ppt文件格式 介绍了单片机的结构、程序设计、定时器、中断等
    • 单片机教程
      这是一个单片机的教程,可以用于初次学习单片机的人学习。
    • 单片机入门
      很好的单片机学习资源,入门比较好适合对单片机的学习有兴趣的人,而且是名校的精彩讲解,
    • 单片机
      利用protues仿真实现基于51单片机的大棚温湿度检测系统设计