标题:
刚学单片机这个程序可以帮忙注释一下吗?
[打印本页]
作者:
醉虾呀
时间:
2020-10-25 20:25
标题:
刚学单片机这个程序可以帮忙注释一下吗?
#include<reg52.h>
#define uint unsigned int
void delay7ms(void) //误差 -0.217013888891us
{
unsigned char a,b;
for(b=208;b>0;b--)
for(a=14;a>0;a--);
}
void delay2ms(void) //误差 -0.217013888889us
{
unsigned char a,b;
for(b=80;b>0;b--)
for(a=10;a>0;a--);
}
void main(void)
{
uint led[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint m,n=0,a=0;
for(m=0;m<=10;m++)
{
while(a<30)
{
if(m==10)
{
m=0;
n++ ;
if(n==10)
n=0;
}
P0=led[m];
P2=0x40;
delay7ms();
P2=0x00;
delay2ms();
P0=led[n];
P2=0x80;
delay7ms();
P2=0x00;
delay2ms();
a++;
}
a=0;
}
}
作者:
杨雪飞
时间:
2020-10-26 09:56
#include<reg52.h> //头文件,没啥好说的。
#define uint unsigned int //程序中用uint代替unsigned int,简化定义无符号整数型变量
void delay7ms(void) //误差 -0.217013888891us //延时函数,这个根据晶振计算,他这个误差不一定就准确。
{
unsigned char a,b;
for(b=208;b>0;b--)
for(a=14;a>0;a--);
}
void delay2ms(void) //误差 -0.217013888889us //一样的延时函数,至于怎么延时,就是看下边的那个循环,计算a-十次,b-1次,就这样进行80次a-1减十次,也就是让CPU完成800次计算来打发时间,上边的一样,VIOD在具体使用中会换成整数值,与那800次相乘就是浪费的总共时间---延时。
{
unsigned char a,b;
for(b=80;b>0;b--)
for(a=10;a>0;a--);
}
void main(void) //主函数,程序从此开始。
{
uint led[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //做一个名字为led的数据表[10]表示这个表里总共有十个元素,确定里边元素的序号。第一个元素为0XC0 表示输出的时候PIO输出的1 1 0 0 0 0 0 0,依次。
uint m,n=0,a=0; // 定义m , n , a ,三个无符号整数型变量,且n,a初始值为0
for(m=0;m<=10;m++) //m初始值为0,进行自加运算,和下边那句M==10 M=0那段一起表示,初始为0 依次+1,加到10了归0,也就是m从0--1.
{
while(a<30)
{
if(m==10)
{
m=0;
n++ ;
if(n==10)
n=0;
}
P0=led[m]; //P0口依次取uint led[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 表里的十个数据,
P2=0x40; //P2口电平状况为 0 1 0 0 0 0 0 0 P2^6=1;
delay7ms(); //延时
P2=0x00; //P2口电平全部为0
delay2ms(); //延时
P0=led[n]; //P0口依次取uint led[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 表里的十个数据,因为N也是从0--10,他是在M到10后开始从1开始数,也就是M显示完了开始显示N的数。
P2=0x80; //P2口电平为1 0 0 0 0 0 0 0 P2^7=1;
delay7ms(); //延时
P2=0x00; //P2口全部置0.
delay2ms(); //延时
a++; //a自加,这个变量定义的a最大值是30,所以,上边的显示循环30次 while(1)
}
a=0;
}
}
作者:
luzhongyi86
时间:
2020-10-26 11:27
#include<reg52.h>
#define uint unsigned int
void delay7ms(void) //延时7m函数
{
unsigned char a,b;
for(b=208;b>0;b--)//循环208次
for(a=14;a>0;a--);//循环4次
}
void delay2ms(void) //延时函数
{
unsigned char a,b;
for(b=80;b>0;b--)//循环80次
for(a=10;a>0;a--);//循环10次
}
void main(void) //运行主函数
{
uint led[10]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数组变量
uint m,n=0,a=0;};//变量
for(m=0;m<=10;m++) ;};//循环10次
{
while(a<30)//如果a大于30不运行括号内代号
{
if(m==10)
{
m=0;
n++ ;
if(n==10)
n=0;
}
P0=led[m];//P0=数组变量其中一个
P2=0x40;//P2=0x40
delay7ms();//延时
P2=0x00;//
delay2ms();//延时
P0=led[n];//P0=数组变量其中一个
P2=0x80;//
delay7ms();//延时
P2=0x00;
delay2ms();//延时
a++; //A加1
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1