📄 rs232.c
字号:
/***************************************************************************
* KOMMUNIKATION 蹷ER DIE SERIELLE *
* SCHNITTSTELLE *
* (c)2004 Thomas Wiens *
* *
* Es werden 黚er ein C++ Programm auf dem PC die LEDs angesteuert *
* und der Zustand der Taster abgefragt. *
****************************************************************************/
#include "reg51rx2.h"
#define HEAD1 0xAA
#define HEAD2 0x55
#define HEADSEND 0x58
void serialInit(void);
void sendeTaster(void);
void main(void)
{
volatile unsigned char puffer;
unsigned char z_ok;
serialInit(); // serielle Schnittstelle einrichten
P2 = 0xff; // Taster als Eing鋘ge schalten
P0 = 0xff;
while (1)
{
while (!RI){}
puffer = SBUF;
RI = 0;
if (puffer == HEAD1)
{
z_ok = 1;
}
else if ((puffer == HEAD2) && z_ok == 1)
{
z_ok = 2;
}
else if ((puffer == HEADSEND) && z_ok ==1)
{
sendeTaster();
z_ok = 0;
}
else if (z_ok == 2)
{
P0 = ~(puffer);
z_ok = 0;
}
else
{
z_ok = 0;
}
}
}
void sendeTaster(void)
{
SBUF = ~P2;
while (!TI){}
TI = 0;
}
void serialInit(void)
{
PCON |= 0x80; // SMOD = 1
TR1 = 0; // Timer 1 stoppen
TMOD &= 0x0f; // Timer auf Modus 2 -> 8-Bit Auto Reload
TMOD |= 0x20;
TH1 = 244; // Reload f黵 9600 Baud
TL1 = 255;
RCLK = 0; // Takt RxD von Timer 1
TCLK = 0; // Takt TxD von Timer 1
SM0 = 0; // auf Modus 1
SM1 = 1; // einstellen
REN = 1; // Empf鋘ger freigeben
TI = 0; // Senderegister leer
RI = 0; // Empfangsregister leer
TR1 = 1; // Timer 1 starten
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -