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

📄 init_comm.c

📁 液晶屏显示程序
💻 C
字号:
#include	<reg52.h>
#include	<ctype.h>
#include	<stdlib.h>
#include	<stdio.h>
#include	<math.h>
#include    <intrins.h>
#include    "define.h"
//#include    "val.h"
#include    "function.h"
//unsigned char ram_wr24c02;
//unsigned char pt_write_24c02;
#define   TRRE_GAP_MAX   5
 
bit second_bit;
bit sec_bit,bReceOK;
unsigned char dms1,dms10,dms100,sec,key_dms10,comm_time;
unsigned char wel_time;
//unsigned char ram_373;
unsigned char idata cReceBuffer[30],cSendBuffer[30];
unsigned char cSendLen,cReceLen,cSendPosi,cReceTimeOut;

extern unsigned char upDataTime,cReceLen;
unsigned char rece_gap_time,speed_time;
unsigned char rece_pt;  

/**************************************************/
//   系统进行初始化程序
/**************************************************/
//------------------------------------------------
//   对定时器0进行初始化
//------------------------------------------------
void init_t0(void)
{
        TH0=0xf8;
        TL0=0x2f;
        ET0=1;
        TR0=1;
}

//------------------------------------------------
//     串口进行初始化
//------------------------------------------------
void init_com(void)
{
        SCON=0x40;      //  mode 1 tx/re
        PCON=0x80;      //  smod=0 fosc
        TMOD=0x21;      //  t0 16b/count  t1 auto load
        TH1=0xfa;       // 19.2 kbit/s   1.2kbyte/s
        TL1=0xfa;
        RI=0;
        TI=0;
        REN=1;          // enable ren
        TR1=1;          // enable time1 count
        ES=1;
}

//------------------------------------------------
//     对存储的数据进行初始化
//------------------------------------------------
/*void init_setup(void)
{
    EA=0;
    Read24c02(ram_wr24c02,0,5);
    EA=1;
}

void init_24c02(void)
{
    EA=0;
    // 读取  24C02  的读写指针
//    Read24c02(&pt_write_24c02,PT_WRITE24C02_ADDRESS,1);
    EA=1;

}*/

//------------------------------------------------
//     对液晶显示屏进行初始化,并进行时间的延迟,保证外部信号的有效性
//------------------------------------------------
void init_lcd(void)
{
    unsigned char i;
    GROUND_LED=0;         //   背景灯亮
    STATUS_LED=1;         //   错误状态灯灭
    BUZZER=1;
    for(i=0;i<8;i=i+2) {
        display_l_black(i,0,64);
        display_r_black(i,0,64);
        }
}
/**************************************************/
//    初始化程序结束
/**************************************************/



void init_sub(void)
{
     init_com();
     init_lcd();
     init_t0();
//     init_24c02();
     open_display();
}
//---------------------
void time_add(void)
{
     second_bit=0;
     sec_bit=1;
     wel_time++;


}


void t0_int(void) interrupt 1  // using 0
{
//	TH0=0xfc;		//
//	TL0=0x18;		// 
        TH0=0xf8;               // 定时器中断中需要的数据初始化
        TL0=0x2f;               // 定时器中断中需要的数据初始化
        clr_wdt=1;
//     计时过程的开始
	dms1++;
	if(dms1==10) {
		dms1=0;
		dms10++;
		key_dms10++;
        comm_time++;
		if(dms10==10){
			dms10=0;
			dms100++;

			upDataTime++;
			 speed_time++;
			if(dms100==10)      {
                 dms100=0;
                 second_bit=1;
				 
                 }
			}
		}
        
       if(cReceLen)   {
           rece_gap_time++;
           if(rece_gap_time>TRRE_GAP_MAX) {
                 cReceLen=0;    //  两个数据之间的时间超过了5MS,接收出错
        //  接收的数据必须在5MS内处理完,否则接收缓冲器的指针会复位
        //  或是长时间接收不到数据,接收缓冲器清空
//                 rece_bit_success=0;   //  清除正确接收标志
//                 rece_bit_fail=0;      //  清除错误接收标志
                 rece_gap_time=0;      //  清除接收间隔时间
//                 REN=1;                //  enable rece
                 }
             }
   
}


void uart_int(void) interrupt 4
{
	if(TI)
	{
		TI = 0;
		if(cSendLen > 0)
		{
			SBUF = cSendBuffer[cSendPosi++]|0x80;
			cSendLen--;
		}
		else
		{
		 // 使能485接收
		 	tran_en = 0;
		 	cReceLen = 0;
		}
	}
	else if(RI)
	{
		RI = 0;
      rece_gap_time=0;
		cReceTimeOut = 5;
		cReceBuffer[cReceLen] = SBUF&0x7f;        
		if(cReceLen > 5) {
			if((cReceBuffer[cReceLen-1] == 0x0d) && (cReceBuffer[cReceLen] == 0x0a))
				bReceOK = 1;                
            }    
		cReceLen++;
		rece_pt=cReceLen;
		if(cReceLen>28)  cReceLen=0;
//        cReceBuffer[cReceLen]=cReceLen;
//		   CheckCommData();
	}

}


⌨️ 快捷键说明

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