一段单片机C语言,求大神逐句翻译一下。

#include <REGX51.H>
#define uchar unsigned char
#include <intrins.h>
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xC0};

void delay()
{ uchar i,j;
for(i=0;i<15;i++)
for(j=0;j<250;j++)
{_nop_();}
}
uchar seg7(uchar a)
{return tab[a];}

void main(void)
{ uchar i,j,k,x,y;
P1=0xff;
P0=0xff;
y=0;
while(1)
{ j=0xf7;
k=y;
for(i=0;i<4;i++)
{

P0=seg7(k);
k++;
P1=_cror_(j,i);
delay();
P1=0xff;
}
x++;
if(x==15){x=0;y++;}
if(y==8)y=0;
}
}

#include <REGX51.H> //头文件
#define uchar unsigned char //变量关键字更改
#include <intrins.h> //头文件
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xC0};
//字符数组定义
void delay() //子函数定义
{ uchar i,j; //变量定义
for(i=0;i<15;i++) //for语句,执行15次
for(j=0;j<250;j++) //执行250次
{_nop_();} //共执行250*15次空函数,延时操作
}
uchar seg7(uchar a) //子函数定义
{return tab[a];} //返回tab数组内第a个变量的值

void main(void) //主函数
{ uchar i,j,k,x,y; //变量定义
P1=0xff; //port1全部置位
P0=0xff; //port0全部置位
y=0; //y赋0
while(1) //无限循环
{ j=0xf7; //j赋11110111
k=y; //y赋给k
for(i=0;i<4;i++) //4次循环
{

P0=seg7(k); //P0=第K个元素的值
k++; //k=k+1
P1=_cror_(j,i); //P1口带返回的移位操作
delay(); //延时
P1=0xff; //P1全部置高
}
x++; //x=x+1
if(x==15){x=0;y++;} //如果15次,x=0,y=y+1
if(y==8)y=0; //8*15次,y=0,重新开始循环
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-21
/*添加备注是个好习惯*/
// -> 头文件
#include <REGX51.H>
#include <intrins.h>
// -> 宏定义(#define别名定义)
#define uchar unsigned char
// -> 全局变量定义
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xC0}; // 定义一字符数组 tab[] (大小编译器自动计算)
// -> 延时函数
void delay()
{
uchar i, j;
for(i=0;i<15;i++)
for(j=0;j<250;j++)
_nop_();
}
// -> 返回 tab[a] 的值
uchar seg7(uchar a)
{return tab[a];}
// -> 主函数
void main(void)
{
uchar i,j,k,x,y;
// -> 初始化I/O
P1=0xff;
P0=0xff;
// -> 局部变量赋值
y=0;
// 一直循环执行
while(1)
{
j=0xf7;
k=y;
for(i=0;i<4;i++)
{
P0=seg7(k); // 数码管显示
k++;
P1=_cror_(j,i); // 字符循环右移 i 位,值赋给 J
delay(); // 延时
P1=0xff; // 数码管 消影
}
x++;
if(x==15)
{x=0;y++;}
if(y==8)y=0;
}
}追问

我一直有个疑问,什么是全局变量。能不能就这段程序,举个例子,说明下什么是全局变量?

追答

全局变量 就是 在本程序中 所有函数都可直接使用该变量,需在函数之外定义(比如uchar code tab[])
局部变量 就是 只能 在某函数内部使用 , 需在某函数内部定义(比如 void delay() 函数里的uchar i,j,k,x,y;)

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网