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

📄 comnoflash.c

📁 多字节汉字屏显示控制程序
💻 C
字号:
#include "config.h"
struct	usart 	xdata 	cominfor[MAXCOMBUF];

xdata 	uchar  	all_plan;			//串口接收到的总帧数
extern 	reset_system(uchar i);		//系统重新启动
extern  xdata	uchar	word;				//这个用于向主调函数返回存储器中是否有可显示的内容

void usart(void) interrupt  4  using 3
{
	static uint point  = 0;		//接收数据计数器
	static uint nodata = 0;		//非显示数据测试计数器
	static uchar  cont=0;		//字头检测计数器
	static uchar plan;			//接受帧计数器自减计数器
	static uchar form=0;		//数据帧号
	static bit	addrtest=0;
	uchar xdata *pt;			//存储器指针

	if(TI) {TI = 0;return;}
	RI = 0;
	//COMOUTRESET;
	if(addrtest != 0) return;
	#ifndef USEDTW
		//使用测试软件
		if(cont < 5){
					if((cont == 0)&&(SBUF != ADDR)) {cont=0; addrtest = 1; return;}  	//检测字头=设备地址
					if((cont == 1)&&(SBUF != 0x55)) {cont=0; addrtest = 1; return;}  	//检测字头
					if((cont == 2)&&(SBUF != 0xaa)) {cont=0; addrtest = 1; return;}  	//检测字头
					if(cont == 4) plan = all_plan = SBUF; 	//检测字头=幕数
					if(++cont == 1){point=0; nodata=0; form=0;}
					return;
					}
	#else
		//使用TW软件
		if(cont < 2){
					if((cont == 0)&&(SBUF != ADDR)) {cont=0; addrtest = 1; return;}  	//检测字头=设备地址
					SM2 = 0;
					if(cont == 1) plan = all_plan = SBUF; 	//检测字头=幕数
					if(++cont == 1){point=0; nodata=0; form=0;}
					return;
					}
	#endif
	if(point < sizeof(cominfor[form].dip)){
									pt = (uchar *)&cominfor[form];
									pt += point++;
									*pt = SBUF;
									return;
									}
	if(nodata < (sizeof(cominfor[form].dip))) {nodata++; return;}
	pt = (uchar *)&cominfor[form];
	pt += point++;
	*pt = SBUF;
	if(point != (sizeof(cominfor[form]))) return;

	nodata = 0;
	point=0;
	if(--plan != 0){
					if(++form < MAXCOMBUF)	return;
				    }
	cont = 0;
	addrtest = 0;
	word = 0xaa;		//存储器中是否有可显示的内容
	reset_system(0);
}

⌨️ 快捷键说明

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