0%

51例程

背景知识

### 文件下载 51单片机特殊功能寄存器与串行通讯文件下载

代码示例

串口输出转lcd显示,中断方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code sendBuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar flag=0;

void delay(uchar);

void main(){
EA=1;
ES=1;
SCON=0x00;

SBUF=sendBuf[flag];
for(;;);
}

void sint() interrupt 4{
delay(500);

SBUF=sendBuf[flag];
flag++;
if(flag==10){
flag=0;
}

TI=0;
}

void delay(uchar ms){
uchar i;
while(ms){
for(i=0;i<123;i++);
ms--;
}
}
读取按键转lcd字符显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar flag=0;
uchar code sendBuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit P1_0=P1^0;
sbit P1_1=P1^1;
uchar r;



void delay(uchar);

void main(){
SCON=0x10; //方式0允许输入数据
EA=1;
P2=sendBuf[flag];
while(1){
if(P1_0==0){
ES=1;
}else{
ES=0;
flag=1;
}
}
}


void sint() interrupt 4{
P1_1=0;
delay(1);
P1_1=1;
r=SBUF;

if(r!=0xff){
switch(r){
case 0xfe:flag=0;break;
case 0xfd:flag=1;break;
case 0xfb:flag=2;break;
case 0xf7:flag=3;break;
case 0xef:flag=4;break;
case 0xdf:flag=5;break;
case 0xbf:flag=6;break;
case 0x7f:flag=7;break;
}

}
P2=sendBuf[flag];
RI=0;
}

void delay(uchar ms){
uchar i;
while(ms){
for(i=0;i<123;i++);
ms--;
}
}

恰饭,恰饭