我想問的是為什么只能用hex模式來發送而且怎么才能實現我不點串口助手的發送,只要我一按下按鍵就能發送到我的pc呢?
單片機源程序如下:
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar code duan[16] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar KeyValue;
void delay(uint z) {
uint y;
for (;z>0;z--)
for (y = 0; y < 110; y++);
}
void chuankouInit() {
TMOD = 0x20;
TH1 = 243;
TL1 = 243;
TR1 = 1;
SCON = 0x50;
PCON = 0x80; //倍波特率
ES = 1;
EA = 1;
}
void keypros() {
//uint a;
P1 = 0xf0; //0xff不行,一定要控制變量先行后列或者先列后行否則要列出所有情況
if (P1!=0xf0) {
delay(10);
if (P1!= 0xf0) {
switch (P1) {
case (0x70): KeyValue = 3;break;
case (0xb0): KeyValue = 2;break;
case (0xd0): KeyValue = 1;break;
case (0xe0): KeyValue = 0;break;
}
P1 = 0x0f;
if (P1!=0x0f) {
switch (P1) {
case (0x07): KeyValue += 12;break;
case (0x0b): KeyValue += 8;break;
case (0x0d): KeyValue += 4;break;
case (0x0e): KeyValue += 0;break;
}
}
}
}
// while ((a < 50) && (P1!=0x0f)) {
// delay(10);
// a++;
// }
}
void main() {
chuankouInit();
while (1) {
keypros();
P0 = ~duan[KeyValue];
}
}
void chuankou() interrupt 4 {
uchar receiveData;
receiveData = KeyValue;
RI = 0; //收完
SBUF = KeyValue;
while (!TI);
TI = 0; //發完
}
|