家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生 家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生
您的位置:网站首页 > 电器维修资料网 > 正文 >

用Keil C为单片机编程的编程环境

★★★★★【文章导读】:用Keil C为单片机编程的编程环境具体内容是:这个程序用来使led1每两秒钟闪烁一次。下面解释程序各行功能:00行:#include该行的作用是把“at89x051.h”这个文件包含进来。当你把一个文...

来源: 日期:2013-11-17 19:38:14 人气:标签:

用Keil C为单片机编程的编程环境

  这个程序用来使led1每两秒钟闪烁一次。下面解释程序各行功能:00行:#include<at89x051.h>
  
  该行的作用是把“at89x051.h”这个文件包含进来。当你把一个文件包含进c程序后,keilc会在编译程序的时候把它的内容连接到被编译的单片机程序中,这样你就可以不要把这个文件的内容重写一遍了。
  
  #include命令通常用在程序的开头。在写单片机程序的时候,一般在开始处都要把与你所使用的单片机相关的头文件包含进来(头文件是什么,初学者可以先不管它),因为在它里面有许多在写程序时要用到的变量声明(有关变量的含义在后面讨论),如10行的变量“p1_7”,就是在头文件中声明的。这个例子中,我们使用的是at89c2051单片机,·所以包含了“at89x051.h”这个头文件。
  
  在keilc的头文件中,包含着许多关于单片机缓存器和i/o口的声明,声明都以变量的形式描述,并且这些变量都是以通用的名称来命名的。有了这些声明,我们在编写c程序的时候,就可以不需要考虑单片机内部的存储器分配(存储器分配在汇编程序中是一个难以处理的问题,要把存储器分配好,必须对单片机的存储结构有很深入的了解),直接把这些变量当作缓存器和i/o口来使用。在keilc的头文件中,常用的重要缓存器和i/o口的声明有:
  
  *p0、pl、p2、p3:声明po-p3四组i/0口。对于at89c2051,只有pl和p3口;
  
  *p0_0,…,p0_7;pl_0,…,p1_7;p2_0,…,p2_7;p3_0,…,p3_7;声明po-p3四组i/o口各引脚。如p1_5表示,pl口的5号引脚,即p1.5引脚;
  
  *有关uart串行通信的变量声明;
  
  *有关中断的变量声明;
  
  *有关定时/计数器的变量声明。

 1478522


  
  在keilc中,把相关头文件包含进来的方法很简单,你只要在编写c程序时右击鼠标,并从弹出的菜单中选择“插入

  即可。这样你就无需考虑应该包含什么名称的头文件了,大大地方便了源程序的编写。

  在数学上,数被分为有理数、无理数、整数、小数……等等。在c语言中,数也要作类似的划分,称为数据类型。不同的数据类型所占用的存储空间不一样。
  
  在一般应用中,用得 多的一种数据类型是整型数,即它只能用来存放整数,其表示符号为“int”。它占用两字节的存储空间。若在int前面加上unsigned,则表示所声明的变量是无符号整型数。也就是说,此时变量所存放的数值范围是0—65535。另一个用得很多的数据类型是void,这个数据类型只用于函数声明中。
  
  本行中unsignedintk的作用,是声明一个无符号整型变量k。我们在求解数学题目的时候,经常要假设末知数,以便于求解。之所以称作末知数,是因为它的值是不确定的,是会变化的。在单片机程序中也会用到与这种未知数相类似的量,这就是变量。变量是用来存放数据的,它的值会因程序的执行而变化,因此称为变量。如例中的i、j、k都是变量。与数学中的未知数在使用之前要先假设一样,变量在使用之前也要先假设,即先声明变量。
  
  01行:声明延时子函数delay()什么是函数?所谓函数,就是能完成特定功能的程序段。在c语言中,它是一个重要的概念。这是因为在一般情况下,都是就是把经常使用的语句群组成函数,这样在程序中就可以多次调用,以减少重复编写代码的麻烦,也可以减小程序的长度。任何一个c程序都是由若干个函数组成的。c程序的函数结构如下:

  该函数结构中各部分含义如下:
  
  *返回的数据类型:用于确定当函数结束时要返回一个什么样类型的数据。上例01、08行中两个函数返7回的数据类型都是void,void数据类型是指没有具体数据,即函数结束时不需要返回具体的数据。
  
  *函数名:指定函数的名称。在c语言中,函数有主函数和和子函数之分。子函数的函数名由程序员自己确定,例中的delay()就是一个子函数,这个子函数的作用是让程序延时k毫秒。子函数的个数可以有任意个,也可以没有。
  
  *参数:我们在解数学函数slnx时,要知道x的值。在e程序中,当调用一个函数时,也可能需要一个类似的值,这个值就称为参数。参数的本质就是个变量,正因为这样,参数也要有数据类型及名称。
  
  例中的第01行声明delay()函数时就用到了一个无符号整型参数k,在第11到第13行调用该函数时就把所需的参数值1000写上了,即让程序延时1000毫秒(1秒)。当然,如果函数不需要参数,就可省略这个部分,如例中的main()函数就是如此。
  
  *函数体:包含执行函数功能的具体语句,是在函数中用花括号括起来的部分。必须注意的是,所有由 外层花括号括起来的都是函数体。如上例中02和07行这对花括号中括起来的都是函数体,虽然它们中间还有其它花括号。
  
  根据前面的函数结构及其各部分的含义,我们可以判断,上例中01行的delay()和08行的main()都是函数,但04、05、10行的for不是函数,因为它没有“返回的数据类型”部分。
  
  同时,跟变量一样,在使用一个函数之前必须声明它。如本例中,01行首先声明了delay()函数,因为在13、15行要调用它。

  “;”表示一行语句的结束。对初学者来说,很容易忘记书写分号,因此值得大家注意。

  表达式,它是用来表示某种运算关系的式子。c语言的表达式大部分同数学上的一样,但也有例外,如这里的“i=i+1”,它的意思就是让i的值加1后保存回i中。若i为50,则执行该表达式后,i的值会变成51。这个表达式在c语言中也经常写成“i++”的形式。

   两个for循环的嵌套。循环的作用是让单片机在循环条件满足时重复执行一段程序。for循环的格式如下:

  该循环的作用是,首先执行一次“表达式1”,然后判断“条件表达式2”是否成立,若不成立,则执行“循环体”后面的语句,反之,执行“循环体”中的语句,接着执行“表达式3”,执行完“表达式3”后,又一次判断“条件表达式2”是否成立……,以此循环。它的程序流程如下图所示。从流程图中可以清楚看出,“表达式1”只会执行一次。

 


  
  在一个循环的循环体中可以包含另一个或更多的循环,这就是循环的嵌套。
  
  本例中04-06行是两个循环的嵌套。
  
  第05、06行的for循环就是先让j的值为0,然后判断j是否小于120,接着执行第06行的循环体(这里只是个分号,即一条什么也不做的空语句,它只占用一个机器时间而已),执行完后,让j的值增加1,又一次判断j是否小于l20……。这个循环的作用就是执行120次空语句。千万不要以为执行120次空语句是徒劳的,其实这是 常用的延时方法。
  
  第04行的for循环的作用是让05、06行的for循环执行k次。
  
  循环嵌套可以获得更大的循环次数,如本例中利用两个for循环来达到kx120次的循环,在13、15行调用delay()函数时,k=1000,即完成120000次循环。当然,你可能会说,为什么不通过加大“条件表达式2”值的方法,来达到只用单循环就可满足所需循环次数的目的呢?如把05行的“j<120”改成“j<120000”。但实际上这是行不通的,因为无符号整型数所能表示的 大数只有65535。

  主函数是c程序的主控函数,程序的执行是从main()函数开始,在实际编写c程序的时候,主函数可以不放在程序的开始,但编译器仍然会以main()函数的位置为程序执行的起始位置。
  
  c程序有且只能有一个主函数,而且它的名称也是固定的,即“main”。

  for循环。这个循环比较特别,它省略了for循环结构中的“表达式1”、“条件表达式2”、“表达式3”,这是无条件循环,即循环永不结束,直到关闭电源为止。在单片机程序中,经常使用无条件循环,这是因为单片机程序基本上都是重复执行任务的。

   让p1口的7号引脚(即p1.7引脚)输出高电平,根据图l可知,此时led1会处于截止状态,即关闭了该引脚上led的显示。

  在c程序中,凡是以“//”开始的都是注释。注释是用来解释程序行功能的,凡是位于该行此符号之后的任何字符,c编译器都不予编译。换言之,注释只是给编程人员阅读的,它的存在与否,并不影响程序的执行。这里的注释,就是用来说明语句“p1_7=1”的功能。

  以参数值1000来调用延时子函数delay(),即让单片机执行到此处时,延时1000毫秒。

  让pl口的7号引脚(即p1.7引脚)输出低电平,根据图1可知,此时led1会处于导通状态,即点亮了该引脚上led的显示。

  在这里,还需要说明一下有关字母的大小写的问题:
  
  与一般的程序语言不同.c程序是区分字母大小写的,因此,在c程序中,“i”和“i”是两个不同的变量。我们在书写c程序的时候,要特别注意字母大小写的问题。习惯上,单片机系统声明的变量全部用大写表示,程序员自己声明的变量用小写,程序员自己声明的函数首字母大写。我们在平时的学习中就要养成良好的书写习惯,以减少因为字母大小写不一致而引起的程序错误。

  • 1
  • 2
  • 下一页

【看看这篇文章在百度的收录情况】

联系方式

  • 0731-85579057 , 13308461099
  • 点击这里给我发消息点击这里给我发消息点击这里给我发消息
网站栏目导航: 培训课程 手机硬件 手机软件 综合维修 学校资讯 考证指南 就业导航 招生指南 教学管理 入学须知 学校图片 教学大纲 师资力量 学生感言 学校概况 教学实景 手机维修培训资讯 电脑维修培训 维修间故事 手机维修培训 液晶电视维修培训 家电维修资料网 电器维修资料网 招生地区 刷机教程 家电维修 手机技巧 老版网站 招生平台网络工程
友情链接: 监控安装培训 电动工具维修 家电维修学校 电工培训学校 液晶电视维修 焊工培训学校 电工焊工学校 电脑维修学校 家电维修培训 电脑维修培训 家装电工培训网络安装维护 主板维修 液晶显示器 笔记本电脑维修 电脑组装维护 电脑硬件维修 电脑维修 电工考证 电工证 装修电工 水电工 维修电工 电工 焊接技术 电焊工 焊工 电动设备维修 电动工具维修 制冷维修 空调维修 冰箱维修  更多>>
阳光-手机维修教育品牌学校
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校
中山市,固原市,银川市,玉树,海东,陇南市,酒泉市,张掖市,天水市,金昌市,兰州市,榆林市,延安市,渭南市,铜川市,阿里,山南,拉萨市,怒江,文山州,楚雄州,普洱市,昭通市,玉溪市,昆明市,毕节,铜仁,遵义市,贵阳市,甘孜州,资阳市,达州市,宜宾市,南充市,遂宁市,绵阳市,泸州市,自贡市,三亚市,崇左市,河池市,玉林市,钦州市,梧州市,柳州市,梅州市,肇庆市,湛江市,佛山市,珠海市,韶关市,湘西州,怀化市,郴州市,张家界市,邵阳市,株洲市,仙桃市,随州市,荆州市,荆门市,襄樊市,黄石市,驻马店市,信阳市,南阳市,漯河市,中卫市,石嘴山市,海西,海南藏州,黄南州,海北,甘南,庆阳市,平凉市,武威市,白银市,嘉峪关市,安康市,汉中市,咸阳市,宝鸡市,林芝,日喀则,昌都,迪庆,德宏,大理,西双版纳,红河州,临沧市,丽江市,保山市,曲靖市,黔东州,黔西州,安顺市,六盘水市,凉山州,阿坝州,雅安市,广安市,眉山市,内江市,广元市,德阳市,攀枝花市,成都市,海口市,来宾市,百色市,贵港市,北海市,桂林市,南宁市,云浮市,揭阳市,潮州市,清远市,阳江市,汕尾市,惠州市,茂名市,江门市,汕头市,深圳市,广州市,娄底市,永州市,益阳市,岳阳市,湘潭市,长沙市,恩施州,黄冈市,孝感市,鄂州市,十堰市,武汉市,周口市,商丘市,三门峡市,许昌市,焦作市,安阳市,鹤壁市,平顶山市,开封市,郑州市,聊城市,滨州市,德州市,莱芜市,日照市,泰安市,烟台市,潍坊市,东营市,淄博市,上饶市,济南市,抚州市,宜春市,赣州市,新余市,九江市,景德镇市,宁德市,南平市,泉州市,莆田市,厦门市,宣城市,亳州市,六安市,宿州市,黄山市,滁州市,安庆市,淮北市,马鞍山市,蚌埠市,芜湖市,合肥市,丽水市,舟山市,衢州市,金华市,湖州市,嘉兴市,宁波市,宿迁市,镇江市,盐城市,连云港市,苏州市,徐州市,南京市,绥化市,牡丹江市,佳木斯市,大庆市,鹤岗市,哈尔滨市,白城市,白山市,辽源市,吉林市,葫芦岛市,铁岭市,盘锦市,阜新市,锦州市,本溪市,鞍山市,沈阳市,锡林郭勒盟,通辽市,乌海市,吕梁市,忻州市,晋中市,晋城市,阳泉市,太原市,廊坊市,承德市,保定市,邯郸市,唐山市,宁夏,甘肃省,西藏,贵州省,重庆市,广西,湖南省,河南省,江西省,安徽省,江苏省,黑龙江省,辽宁省,山西省,天津市,四平市,内蒙古,吴忠市,果洛,西宁市,定西市,商洛市,西安市,那曲,黔南州,巴中市,乐山市,贺州市,防城港市,东莞市,河源市,常德市,衡阳市,咸宁市,宜昌市,濮阳市,新乡市,洛阳市,菏泽市,临沂市,威海市,济宁市,枣庄市,青岛市,吉安市,鹰潭市,萍乡市,南昌市,龙岩市,漳州市,三明市,福州市,池州市,巢湖市,阜阳市,铜陵市,淮南市,台州市,绍兴市,温州市,杭州市,泰州市,扬州市,淮安市,南通市,常州市,无锡市,大兴安岭,黑河市,七台河市,伊春市,双鸭山市,鸡西市,齐齐哈尔市,延边,松原市,通化市,长春市,朝阳市,辽阳市,营口市,丹东市,抚顺市,大连市,阿拉善盟,兴安盟,乌兰察布市,巴彦淖尔市,呼伦贝尔市,鄂尔多斯市,赤峰市,包头市,呼和浩特市,临汾市,运城市,朔州市,长治市,大同市,衡水市,沧州市,张家口市,邢台市,秦皇岛市,石家庄市,青海省,陕西省,云南省,四川省,海南省,广东省,湖北省,山东省,福建省,浙江省,上海市,吉林省,河北省,北京市