编写51单片机的常用代码,可用程序列几个出来
时间: 2024-05-03 12:21:23 浏览: 8
以下是51单片机常用代码的一些示例:
1. 点亮LED灯:
```c
#include <reg51.h>
void main() {
P1 = 0x00; // 将P1口置为0
while (1) { // 无限循环
P1 = 0x01; // 将P1.0口置为1
}
}
```
2. 读取按键状态:
```c
#include <reg51.h>
void main() {
P1 = 0x00; // 将P1口置为0
while (1) { // 无限循环
if (P2 == 0x00) { // 如果P2口为0
P1 = 0x01; // 将P1.0口置为1
} else { // 否则
P1 = 0x00; // 将P1.0口置为0
}
}
}
```
3. 定时器中断:
```c
#include <reg51.h>
void timer() interrupt 1 { // 定时器中断处理函数
static int count = 0; // 定义静态变量count
count++; // count自增
if (count == 100) { // 如果count等于100
P1 = ~P1; // 取反P1口状态
count = 0; // 将count置为0
}
}
void main() {
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0x3C; // 定时器0计数初值为0x3C
TL0 = 0xB0; // 定时器0计数初值为0xB0
ET0 = 1; // 允许定时器0中断
EA = 1; // 允许总中断
TR0 = 1; // 启动定时器0
while (1); // 无限循环
}
```
4. 串口通信:
```c
#include <reg51.h>
void serial() interrupt 4 { // 串口中断处理函数
if (RI) { // 如果是接收中断
RI = 0; // 清除接收中断标志
SBUF = SBUF; // 将接收到的数据发回
}
if (TI) { // 如果是发送中断
TI = 0; // 清除发送中断标志
}
}
void main() {
TMOD = 0x20; // 定时器1工作在模式2
TH1 = 0xFD; // 定时器1计数初值为0xFD
TL1 = 0xFD; // 定时器1计数初值为0xFD
PCON = 0x00; // 波特率不加倍
SCON = 0x50; // 串口工作在模式1
ES = 1; // 允许串口中断
EA = 1; // 允许总中断
TR1 = 1; // 启动定时器1
while (1); // 无限循环
}
```