请在程序处标有"//"的写上注释#include <reg51.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint z) { uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } void main() { uchar index,LED; SCON=0; // while(1) { LED=0x7f; // for (index=0;index<8;index++) // { SBUF=LED; // do {}while(!TI); // LED=((LED>>1)|0x80); // delay(300); TI=0; // } } }
时间: 2024-02-05 07:04:41 浏览: 112
303-内部函数intrins.h应用举例(51单片机C语言实例Proteus仿真和代码)
下面是带注释的程序:
```c
#include <reg51.h> // 8051 单片机头文件
#include <intrins.h> // 延时函数头文件
#define uint unsigned int // 定义无符号整型变量
#define uchar unsigned char // 定义无符号字符型变量
void delay(uint z) // 延时函数
{
uint x, y;
for(x = z; x > 0; x--) // z 为延时时间
for(y = 114; y > 0 ; y--); // 延时
}
void main()
{
uchar index, LED; // 定义变量
SCON = 0; // 串口控制寄存器清零
while(1) // 循环
{
LED = 0x7f; // LED 初始值为 0111 1111
for(index = 0; index < 8; index++) // 循环 8 次
{
SBUF = LED; // 将 LED 的值发送到串口发送缓冲区
do {} while(!TI); // 等待发送完成
LED = ((LED >> 1) | 0x80); // 将 LED 向右移位并将最高位设置为 1
delay(300); // 延时 300ms
TI = 0; // 发送完成标志位清零
}
}
}
```
此程序通过循环将 LED 的值从 0111 1111 依次变为 0011 1111、0001 1111、...、0000 0001,并将其发送到串口发送缓冲区。在每一次循环中,程序都会等待串口发送完成,并将 LED 的值向右移位并将最高位设置为 1。同时,程序会在每次循环后延时 300ms。
阅读全文