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

供稿:hz-xin.com     日期:2025-01-14
求帮忙翻译一下C语言。逐句翻译一下。谢谢

#include //包含头文件sbit dula=p0^0; //将p0^0赋值给位变量dulasbit wela=p1^0;//将p1^0赋值给位变量welaunsigned char code wei[]={...};//声明无符号字符型数组并初始化u...//同上void delay(unsigned int i)//声明并定义函数delay{  unsigned char num;//声明无符号字符变量num  for(m=i;m>0;m--)//for循环  for(n=125;n>0;n--)//for循环}void main(){  unsigned char num;//声明无符号字符变量num  while(1)//while循环  {   for(num=0;num<6;num++)   {   p1=wei[num];//赋值   p2=duan[num];//赋值   delay(400);//延迟0.4秒   }  }}如果有不懂得地方,请追问。

#include '引用头文件
sbit IN1=P1^0; '定义P1^0口为IN1
sbit IN2=P1^1; '定义P1^1口为IN2
sbit ENA=P1^2; '定义P1^2口为ENA
void delay(unsigned int z); '定义一个延迟函数,参数为z
void delay_us (unsigned int aa); '定义一个微秒级别的延迟函数
void main() ‘定义主函数
{
while(1) ‘一直在这个循环里
{
unsigned int i,cycle=0,T=2048; ‘定义i,cycle,T三个整型参数
IN1=1; ‘IN1即P1^0赋值为1
IN2=0; ‘IN2即P1^1赋值为0

for (i=0;i<200;i++) ‘for循环
{
delay(10); ‘调用delay函数,赋值为10
ENA=~ENA; ‘每执行一个delay(10)则ENA取反,即P1^2取反,即P1^2输出200个方波
}
IN1=0; ‘IN1即P1^0赋值为0
IN2=1; ‘IN2即P1^1赋值为1
for(i=0;i<100;i++) ‘for循环
{
delay(20); ‘调用delay函数,赋值为20
ENA=~ENA; 每执行一个delay(20)则ENA取反,即P1^2取反,即P1^2输出200个方波
}
IN1=1; ‘IN1即P1^0赋值为1
IN2=0; 'N2即P1^1赋值为0
while(cycle!=T) ‘当cycle不等于T时,执行以下语句
{
ENA=1; ‘ENA即P1^2赋值为1
delay_us(cycle++); ‘调用delay_us函数,赋值为cycle,cycle预赋值为0,每循环一次,cycle加1
ENA=0; ‘ENA即P1^2赋值为0
delay_us(T-cycle); ‘调用delay_us函数,赋值为T-cycle

}
}
}
void delay (unsigned int z) ‘delay子函数,利用循环重复执行命令的方式起到延迟时间的作用
{
unsigned int x,y; ‘定义整型变量x,y
for(x=z;x>0;x--); ‘for循环
for(y=110;y>0;y--); ‘for循环
}
void delay_us (unsigned int aa) 'delay_us子函数,利用循环重复执行命令的方式起到延迟时间的作用
{
while(aa--); 'while循环
}

#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,重新开始循环
}
}

/*添加备注是个好习惯*/
// -> 头文件
#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;
}
}

简单的单片机的汇编语言编程的程序翻译
XH: JB P3.0,$ \/\/判断p3.0是否为低,若为高等待,为低继续往下执行,也就是键盘是否按下 ACALL DELAY \/\/调用延时子程序,键盘消抖 JB P3.0,$ \/\/再次判断 JNB P3.0,$ \/\/判断按键是否释放 MOV P1,#0FBH \/\/点亮p1.2接的灯 ACALL DELAY \/\/延时 JB P3.0,A...

求大神帮忙用C语言解决一下,不胜感激,单片机
前几天刚做了这个作业,看来题主和我用的是同一个教材(张毅刚-单片机原理与应用设计)程序运行效果(动态图不知道能显示吗):第5章习题 程序:include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code dis_code[] ={ 0xF9, \/\/"1" 0xB0...

51单片机求解c语言求解,详细解释, 特别led_table = LED_0F + LED[2...
led_table = LED_0F + LED[2]; \/\/这个 LED_0F是数据表的首地址,,+LED[2] 变成数组的第三个数的地址。i = *led_table; 这里获取值。。。 不过我想太麻烦了 改为 i = LED_0F [ LED[2] ] 就可以了。

51单片机c语言 #define语句解释
问题 1 : #define 的作用, 这是一个预处理语句.何为预处理? 是指编译器(也开发环境)在编译之前的处理.怎么处理呢? 其它就是字符串替换 例: #define PI 3.14 void main(){ float area=0;int radius=2;area=PI*(radius*radius);printf("%f",area);} 预处理之后 void main(){...

求下图的单片机C语言程序、数码管从0--9的加一或减一
include<reg51.h>#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar dat;void ext0() interrupt 0{dat++;dat%=10;}void ext1() interrupt 2{dat--;if(dat>9)dat=9;}main(){EX0=1;EX1=1;IT0=1;IT1=1;EA=1;...

急需单片机高手帮忙用C语言写一个单片机4个灯轮流闪亮的源程序。 详...
\/*对于个单片机的初学者,我希望用最直观的方式来达到你要的要求,程序每一句我已经写好备注,希望对你有帮助*\/ include<reg51.h> \/\/使用51功能头文件 sbit L1=P0^0; \/\/L1对应P0.0,表示第一盏灯 sbit L2=P0^1; \/\/L1对应P0.1,表示第二盏灯 sbit L3=P0^2; \/\/L1对应P0.2,...

51单片机C语言,怎么用二维数组表示一篇英语作文?求大神指点!
在使用51单片机C语言编程时,如果需要表示一篇英语作文,可以利用二维数组来存储各个句子。比如,可以定义一个包含10行9列的二维数组PuZh,每一行存储一个句子,如下所示:unsigned char code PuZh[10][9] = {{"当前速度"},{"前进左转"},{"前进 "},{"前进右转"},{"左转 "},{"停止 "},{"...

求一个51单片机C语言程序编程
单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb\/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C...

求大神在keil上帮写51单片机C语言程序
\/\/第一个实验:\/\/假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7\/\/假设K1按键在P2.3引脚#include<reg51.h>#include<intrins.h>sbit k1=P2^3;\/\/假设K1按键在P2.3引脚void main(){P0=0xfe;while(1){if(k1==0){while(k1==0);P0=_crol_(P0,1);}}}...

请大神帮忙编写一个单片机C语言程序,串行通信的。
unsigned char code dofly[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sbit LED=P1^2;sbit duan=P1^0;\/\/数码管端码使能端 sbit wei=P1^1;\/\/数码管位码使能端 uchar flag,a;void init();void main(){ duan=0;P0=0x55;dua...