⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bc_debug.c

📁 针对蓄电池充电过程中出现的种种问题
💻 C
字号:
/*********************************** MODULE INFO ****************************
	
   Device       : AT90S2333

   File name    : BC_debug.c

   Ver nr.      : 1.0

   Description  : UART report functions for monitoring of the charging
                 
   Compiler     : IAR icca90
   
   Author       : Asmund Saetre
 
   Change log   : 16.05.2000 Made by AS
 
****************************************************************************/
#ifdef DEBUG
  
#include "BC_debug.H"
#include "BC.h"

// Extern struct prototypes
extern time_struct time;

int term_value1;
int term_value2;

int battery_volt_max = 0;
int battery_volt_min = 0;
int temperature_max = 0;
int temperature_min = 0;
int charge_volt_max = 0;
int charge_volt_min = 0;
int charge_current_max = 0;
int charge_current_min = 0;

// UART routines are only included for debug purpose
void Inituart(unsigned char baudrate)
{
    UBRR = baudrate;
    UCR = (1<<TXEN);                        // enable UART transmitter
}

void Send_int(int uart_data)
{
    int temp,middle;
    temp = uart_data;
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    middle = (temp/1000);                   // first digit of int uart_data
    UDR = middle + 0x30;
    temp = (temp-(middle*1000));
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    middle = (temp/100);                    // second digit of int uart_data
    UDR = middle + 0x30;
    temp = (temp-(middle*100));
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    middle = (temp/10);                     // third digit of int uart_data
    UDR = middle + 0x30;
    temp = (temp-(middle*10));
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    middle = temp;                          
    UDR = middle + 0x30;                    // fourth digit of int uart_data
}

void Send_char(char uart_data)
{
    char temp,middle;
    temp = uart_data;
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    middle = (temp/10);                     // first digit of char uart_data
    UDR = middle + 0x30;
    temp = (temp-(middle*10));
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    middle = temp;                          // second digit of char uart_data
    UDR = middle + 0x30;
}

void Send_state_change(void)
{
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'S';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 't';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'a';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 't';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'e';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    Send_char(CHARGE_STATUS);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'T';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'e';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'r';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'm';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    Send_char(TERMINATION);				    //Send termination byte
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    Send_int(term_value1);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_int(term_value2);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
}

void Send_charge_state(void)
{
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 't';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_char(time.min);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_char(time.sec);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'B';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'V';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_int(battery_volt_min);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = '-';                                             
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_int(battery_volt_max);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'C';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'V';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_int(charge_volt_min);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = '-';             
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
	Send_int(charge_volt_max);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'C';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
		Send_int(charge_current_min);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = '-';             
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
		Send_int(charge_current_max);                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 'T';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ':';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
		Send_int(temperature_min);
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = '-';             
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
		Send_int(temperature_max);
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = ' ';                            
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
		
	battery_volt_max 	= 0x00;
	battery_volt_min	= 0x03FF;
	temperature_max 	= 0x00;
	temperature_min 	= 0x03FF;
	charge_volt_max 	= 0x00;
	charge_volt_min 	= 0x03FF;
	charge_current_max 	= 0x00;
	charge_current_min 	= 0x03FF;
}

void Send_CR_LF (void)
{
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 0x0D;                             // send carriage return
    while (!(USR & (1<<UDRE)))              // wait for empty transmit buffer
        ;
    UDR = 0x0A;                             // send line feed               
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -