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 + -
显示快捷键?