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

📄 main.c

📁 单片机的多级通讯程序 包含有keil源程序 和proteus的仿真程序
💻 C
字号:

/*
****************************************************

		

****************************************************
*/

#include <reg52.H>
#include "Typedef.H"
#include "UserDef.H"
#include "Disp.H"
#include "comu485.h"
#include "Keypad.H"

/*  全局变量 */
bit bDispRef = FALSE;		//信号灯:显示更新时间到
bit bKeyScan = FALSE;		//信号灯:键盘扫描时间到
INT8U KeyVal = VK_NULL;		//按键值
INT8U comu_send[8];
INT8U comu_send_len = 0;

/*  函数 */
void KeyboardDeal(void);

/***************************************

	

****************************************/
void main(void)
	{
	INT8U i;

	//初始化
	TMOD = 0x11;
	TH0 = (INT8U)(KTDLY>>8);
	TL0 = (INT8U)(KTDLY);
	TR0 = 1;
	
	comu_init('0');

	ET0 = 1;
 	EA = 1;

	DispInit();		//LCD初始化

	/* LCD清屏 */
	DispCls();

	/* 显示固定的文字 */
	DispFontSet(1);		
   	DispXYSet(0,0);
	DispStr("   Comu Test");

	DispFontSet(1);		
	DispXYSet(3,0);
	DispStr("Send =");
	DispXYSet(5,0);
	DispStr("Recv =");

	
	
	while(TRUE)
		{
		/* 键盘 */
		if (bKeyScan == TRUE)
			{
			bKeyScan = FALSE;
			KeyboardDeal();
			}
					/* 显示扫描刷新,输出可变的文字 */
		if (bDispRef == TRUE)
			{
			bDispRef = FALSE;
			
			DispXYSet(3,60);
			for (i=0;i<8;i++)
				{
				if (i>=comu_send_len)
					{
					DispChr(' ');
					}
				else
					{
					DispChr(comu_send[i]);
					}
				}

			DispXYSet(5,60);
			for (i=0;i<8;i++)
				{
				if (i>=comu_recv_len)
					{
					DispChr(' ');
					}
				else
					{
					DispChr(Rxbuf[i]);
					}
				}
			}
		}
	}




/*************************************

	定时器中断程序 

**************************************/
void int_t0(void) interrupt 1 using 1
	{
	static int cnt = 0;

	TH0 = (unsigned char)(KTDLY>>8);
	TL0 = (unsigned char)(KTDLY);

	cnt ++;

	/* 键盘扫描信号灯  */
	if ((cnt % T_KEYSCAN) == 0)
		{
		bKeyScan = TRUE;
		}

	/* 显示扫描信号灯  */
	if ((cnt % T_DISPREF) == 0)
		{
		bDispRef = TRUE;
		}
	}


/*************************************

	键盘处理 

**************************************/
void KeyboardDeal(void)
	{
	INT8U n;

	n = Keypad_GetKey();
	if (n != KeyVal)
		{
		KeyVal = n;
		if (n != VK_NULL)
			{
			if ((n>=VK_0) && (n<=VK_9))
				{
				comu_send[comu_send_len] = n-VK_0+'0';		/* 数字按键:直接存入发送数组 */
				comu_send_len ++;
				}
			else if (n==VK_EQU)								/* 等于:将现有的数据发送 */
				{
					 comu485_send_packet(comu_send,comu_send_len);
					 comu_recv_len = 0;
				}
			else if (n == VK_CLR)							/* ON/C键:将发送数据清零 */
				{
					comu_send_len = 0;
				}
			}
		}
	}

⌨️ 快捷键说明

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