mainnew.c

来自「本程序给出了基于RF433M无线数传模块」· C语言 代码 · 共 121 行

C
121
字号
#include <w78e54.h>
#include <intrins.h>
#include "absacc.h"	  
#define	uchar unsigned char
#define uint unsigned int
void    keyvalue_cont_subb(void);
uchar   sendbuf_MCU[5];  
bit     key_flag;
sbit    LEDDISP=P3^3;
uchar   cont_key1,cont_key2,cont_key3;
uchar   temp_key1,temp_key2,temp_key3;
/*--------------------------------------------------*/
void Delay_ms(uint j)
{
  	unsigned int k,l;   
  	for(l=0;l<=j;l++)
	{
		for(k=0;k<=500;k++)
	 	{ 
	   	  WDTC=WDTC|0x40;        //Clear  Watchdog
	 	}
	}   
}
//===================================================
//===================================================
//     串口程序
//===================================================
void serial_send_sub(void)
 { 
    uchar  pf,j;
	LEDDISP=0;                      //发射指示
    pf=0;
    sendbuf_MCU[2]=cont_key1;
    sendbuf_MCU[3]=cont_key2;
    sendbuf_MCU[4]=cont_key3;
	for(j=0;j<5;j++)
		{
	     SBUF=sendbuf_MCU[j];
		 pf=pf+sendbuf_MCU[j];
		 while(!TI);TI=0;
		}
	SBUF=pf;	
	while(TI==0);
	TI=0;
 	LEDDISP=1;   
 }
//****************************************************
//主程序开始 		 	   				  			
//****************************************************
void main(void)
{  	
    Delay_ms(20);              
	TMOD=0x21;		           //T1设置为定时方式2 ,T0 under mode 1 
	TH1=0xfd;			       //设置波特率为9600,11.059MHZ
	TL1=0xfd;			
	TR1=1;
	PCON=0x00;		           //SMOD=1
	SCON=0x50;		           //串口方式1
    EA=1;                      //open whole interrup 
	WDTC=0xc7;                 //2.5s
    sendbuf_MCU[0]=0xaa;
	sendbuf_MCU[1]=0x55;
//========================================================
	while(1)
	{
	    WDTC=WDTC|0x40;        //Clear  Watchdog
	    keyvalue_cont_subb();
    } 
}
/**********************************************************
 主程序结束
/*******************************************************/
/*键盘扫描程序,P1接行,P2接列 
/*******************************************************/
void keyscan(void)
{
 P0=0xff;
 P1=0xff;
 P2=0xff; 
 temp_key1=P0;
 temp_key2=P1;
 temp_key3=P2;
 if((temp_key1!=0xff)||(temp_key2!=0xff)||(temp_key3!=0xff))
   {
      Delay_ms(30);
      temp_key1=P0;
      temp_key2=P1;
      temp_key3=P2;
      if((temp_key1!=0xff)||(temp_key2!=0xff)||(temp_key3!=0xff))
         {
            cont_key1=P0;
            cont_key2=P1;
            cont_key3=P2;
            key_flag=1;
         }
      else
         {
            cont_key1=0;
            cont_key2=0;
            cont_key3=0;
         }
   }
 else
   {
      cont_key1=0;
      cont_key2=0;
      cont_key3=0;
   }   
}
//==============================================
uchar  keyvalue;
void keyvalue_cont_subb(void)
 {
    keyscan();
    if(key_flag)
    {  
	  key_flag=0;
      serial_send_sub();
    }
 }

⌨️ 快捷键说明

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