单片机C语言程序

我是刚刚才开始学习C语言,我这有一个很简单的程序,可是我看不懂,有劳各位高手帮我看一下,我把我对每行的理解写出来,不对的请您帮我修改一下,谢谢!
程序:
#include<reg51.h>//定义单片机的特殊功能寄存器
#define uchar unsigned char//
#define uint unsigned int//这两句我就看不懂了!
sbit LED=P1^0;//位定义,用LED代替P1.0这个引脚

void DelayMS(uint x)//这句我也看不懂!
{
uchar i;//这句我只知道定义一个变量,可是什么型的呢?
while(x--)//这句我知道是X在此循环,这句是延时吗?
{
for(i=0;i<120;i++);//在此延时
}
}

//void main()//这句是什么意思啊!是无返回值的函数吗?怎么理解啊!
{
while(1)//这是个大循环,这个我清楚。
{
LED=~LED;//这句话中的~是什么意思啊?
DelayMS(100);//这句话我也不懂!这和上面的那句有关系吗?
}
}

#include<reg51.h>包含了所有接口和地址的名称,不只是特殊功能寄存器,
#define uchar unsigned char//
#define uint unsigned int//是宏定义,这样定义以后,在接下来的程序当中就能用uint 代替unsigned int了,void DelayMS(uint x)//是一个子函数,当调用时,就直接执行大括号里面的语句,while(x--)//是循环语句,当X--=0时,就不满足条件,跳出循环。它整个的功能就是一个延时,等待单片机处理完其它任务,这样写程序符合程序的规范化和可读性的要求,
void是说明返回值是空的,即没有返回值,可以不写,LED=~LED;//是取反,每次执行这条语句就会使其值取反,若上次是0,则执行后其值变为1,
DelayMS(100);就是调用了上面的子函数,代表延时100MS
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-30
#define uint unsigned int就是用unit替换unsigned int,unsigned int是C语言关键字,unit比较简单
void DelayMS(uint x)//定义一个函数,无返回值,参数是个 无符号整形的变量叫 x

uchar 上面不是定义了unsigned char 无符号字符型,就是8位一个字节的变量

。。。。

建议还是自己花两天系统看看C语言的书吧,不难的本回答被提问者采纳
第2个回答  2010-08-09
#include<reg51.h>//定义单片机的特殊功能寄存器
#define uchar unsigned char//
#define uint unsigned int//这两句是宏定义,就是用uint,uchar,代表
unsigned int和unsigned char,无符号整型,无符号字符型
sbit LED=P1^0;//位定义,用LED代替P1.0这个引脚

void DelayMS(uint x)//这里是定义了一个延时函数,你刚学C语言应该还没学到
{
uchar i;//定义一个无符号字符型变量
while(x--)//
{
for(i=0;i<120;i++);//不断地在这执行程序,已达到软件延时的效果
}
}

//void main()//这是主函数!晕,下面是主函数体
{
while(1)//这是个大循环,这个我清楚。
{
LED=~LED;//~是取反的意思,就是由0变为1,或由1变为0
DelayMS(100);//调用延时函数,就是延时
这里就是LED为0,延时一会儿,LED为1,延时一会儿,然后就这样循环,灯就可以闪了
}
} 你最好还是先看看书吧,这些东西应该是最基础的东西了
第3个回答  2010-07-30
大侠,首先你要弄清楚哪个是主函数,主函数是没必要返回一个值的!故可以是void main()
#define uchar unsigned char//
#define uint unsigned int//这两句是宏定义,定义以后你就可以用uchar代替繁琐的unsigned char了。同理uint (两者都是无符号的,题目暗示)
void DelayMS(uint x)//延时函数,总延时时间为x毫秒
//(for(i=0;i<120;i++);//在此延时一毫秒)

{
uchar i;//这句可知道定义一个变量,是无符号字符型的
while(x--)//是延时 {
for(i=0;i<120;i++);//在此延时
}
}
LED=~LED,其中“~”是按位取反运算符,打开开发板电源,P0^0默认是高电平,即1。二极管不亮。按位取反后变为低电平,即0。二极管变亮。
DelayMS(100);意思是延时100毫秒,即此二极管每100毫秒亮一下。
第4个回答  2010-07-30
#define uchar unsigned char//
#define uint unsigned int//这两句我就看不懂了!
===定义uchar 就是unsigned char ===
另一句顾名思义就是定义 unsigned int

sbit LED=P1^0;//位定义,用LED代替P1.0这个引脚

void DelayMS(uint x)//这句我也看不懂!
====================================
就是此为一个不回传的函数,但有个形参x
====================================
{
uchar i;//这句我只知道定义一个变量,可是什么型的呢?
====就是 unsigned char
while(x--)//这句我知道是X在此循环,这句是延时吗?
======这句就是直到x为0时才跳出while
{
for(i=0;i<120;i++);//在此延时
}
}

//void main()//这句是什么意思啊!是无返回值的函数吗?怎么理解啊!
=====这是C语言的主函数
{
while(1)//这是个大循环,这个我清楚。
{
LED=~LED;//这句话中的~是什么意思啊?
===这句话是说LED取反
DelayMS(100);//这句话我也不懂!这和上面的那句有关系吗?
===呼叫DelayMs函数并把实参100带入DelayMs中执行
}
}

相关了解……

你可能感兴趣的内容

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