#include #define uchar unsigned char #define uint unsigned int #define DATA P0 sbit SCLK=P3^6; sbit CS=P3^7; sbit DIN=P3^5; sbit k4=P0^6; sbit k5=P0^7; sbit k3=P0^3; sbit k2=P0^2; sbit k1=P0^1; sbit k0=P0^0; sbit cskey=P2^6; sbit csled=P2^7; sbit baojing=P2^5; uint table1[]={0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,480}; uint table2[]={1023,992,960,928,896,864,832,800,768,736,704,672,640,608,576,544}; //DA转换 void delay() { uint i; for(i=0;i<123;i++); } void write_5615(uint DA) { uchar i; CS=1; SCLK=0; CS=0; DA=DA&0X03FF; for(i=0;i<12;i++) { if((bit)(DA&0x0200)==1) DIN=1; else DIN=0; SCLK=1; DA<<=1; SCLK=0; } SCLK=0; CS=1; delay(); } //按键 uchar keyscan() { uchar key; cskey=0; key=DATA&0x0f; return key; cskey=1; } //主函数 void main() { uchar keyinput; uint speed; P0=0xff; P1=0xff; P2=0x00; cskey=0; csled=1; while(1) { keyinput=keyscan(); if(k5==1) { if(k4==1) { speed=table1[15-keyinput] ; write_5615(speed); } else { speed=table2[15-keyinput] ; write_5615(speed); } } else { write_5615(512); } } }为这段程序添加注释
时间: 2024-03-21 14:39:07 浏览: 97
#indef 与#define 区别于用法
注释如下:
```c
#include <reg52.h> // 引入头文件
#define uchar unsigned char // 宏定义
#define uint unsigned int
#define DATA P0 // 定义数据口
// 定义时钟、片选、数据输入口以及按键口
sbit SCLK=P3^6;
sbit CS=P3^7;
sbit DIN=P3^5;
sbit k4=P0^6;
sbit k5=P0^7;
sbit k3=P0^3;
sbit k2=P0^2;
sbit k1=P0^1;
sbit k0=P0^0;
sbit cskey=P2^6;
sbit csled=P2^7;
sbit baojing=P2^5;
uint table1[]={0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,480}; // 定义数组
uint table2[]={1023,992,960,928,896,864,832,800,768,736,704,672,640,608,576,544};
// DA转换函数
void write_5615(uint DA) {
uchar i;
CS=1; // 片选禁用
SCLK=0;
CS=0; // 片选使能
DA=DA&0X03FF; // 保留低10位
for(i=0;i<12;i++) {
if((bit)(DA&0x0200)==1) DIN=1; // 高位为1,数据口为1
else DIN=0; // 高位为0,数据口为0
SCLK=1; // 时钟上升沿
DA<<=1; // 数据左移一位
SCLK=0; // 时钟下降沿
}
SCLK=0;
CS=1; // 片选禁用
delay(); // 延时
}
// 按键扫描函数
uchar keyscan() {
uchar key;
cskey=0; // 使能按键口
key=DATA&0x0f; // 读取按键值
return key; // 返回按键值
cskey=1; // 禁用按键口
}
// 主函数
void main() {
uchar keyinput; // 定义按键输入值
uint speed; // 定义速度值
P0=0xff; // 初始化P0口
P1=0xff; // 初始化P1口
P2=0x00; // 初始化P2口
cskey=0; // 使能按键口
csled=1; // 禁用LED口
while(1) { // 循环执行
keyinput=keyscan(); // 读取按键值
if(k5==1) { // 判断k5口是否为1
if(k4==1) { // 判断k4口是否为1
speed=table1[15-keyinput]; // 根据按键值查找speed值
write_5615(speed); // 将speed值输出
} else {
speed=table2[15-keyinput]; // 根据按键值查找speed值
write_5615(speed); // 将speed值输出
}
} else {
write_5615(512); // 输出默认speed值512
}
}
}
```
阅读全文