单片机c语言100例_单片机c语言编程300例

单片机c语言100例_单片机c语言编程300例1.2单片机简单C语言程序简单C语言程序假设在单片机AT89C52的P1.0脚接有一只发光二极管,二极管的负极接P1.0脚,正极通过限流电阻接+5V,现在让发光二极管每隔0.5s闪烁一次,用C语言编写的程序如下:#include<reg52.h>sbit P

1.2单片机简单C语言程序   简单C语言程序   假设在单片机AT89C52的P1.0脚接有一只发光二极管,二极管的负极接P1.0脚,正极通过限流电阻接+5V,现在让发光二极管每隔0.5s闪烁一次,用C语言编写的程序如下:   #include<reg52.h>   sbit P10=P1^0;                     //定义位变量   void delay(unsigned int i)         //延时程序,i是形式参数   {   unsigned int j;   For(i=125;i>0:i–)            //变量i由实际参数传入一个值,因此i不能赋初值   For(j=0;j<125;j++);   }   Void main()   {   P10=1;                  //灯灭   Delay(500);               //将实际参数500传递给实际参数i,延时0.5s   P10=0;   Delay(500);                   //灯亮   }   下面对这个程序进行简要的分析。   程序的第一行是“文件包含”,所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。所以,这里的程序虽然只有几行,但C编译器在处理的时候却要处理几十行或几百行。为加深理解,可以用任何一个文本编辑器打开keilc52inc文件夹下面的reg52.h来看一看里面有什么内容,在C编译器处理这个程序时,这些内容也会被处理。这个程序包含reg52.h的目的就是为了使用P1这个符号,即通知C编译器程序中所写的P1是指80C51单片机的P1端口,而不是其他变量,这是如何做到的呢?用写字板程序打开reg52.h显示如下,   /*————————————————————————-   REG52.H   Header file for generic 80C51 and 80C31 microcontroller.   Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.   All rights reserved.   ————————————————————————–*/   #ifndef__REG51_H__   #define__REG51_H__   /* BYTE Register */   sfr P0 = 0x80;   sfr P1 = 0x90;   sfr P2 = 0xA0;   sfr P3 = 0xB0;   sfr PSW = 0xD0;   sfr ACC = 0xE0;   sfr B = 0xF0;   sfr SP = 0x81;   sfr DPL = 0x82;   sfr DPH = 0x83;   sfr PCON = 0x87;   sfr TCON = 0x88;   sfr TMOD = 0x89;   sfr TL0 = 0x8A;   sfr TL1 = 0x8B;   sfr TH0 = 0x8C;   sfr TH1 = 0x8D;   sfr IE = 0xA8;   sfr IP = 0xB8;   sfr SCON = 0x98;   sfr SBUF = 0x99;   /* BIT Register */   /* PSW */   sbit CY = 0xD7;   sbit AC = 0xD6;   sbit F0 = 0xD5;   sbit RS1 = 0xD4;   sbit RS0 = 0xD3;   sbit OV = 0xD2;   sbit P = 0xD0;   /* TCON */   sbit TF1 = 0x8F;   sbit TR1 = 0x8E;   sbit TF0 = 0x8D;   sbit TR0 = 0x8C;   sbit IE1 = 0x8B;   sbit IT1 = 0x8A;   sbit IE0 = 0x89;   sbit IT0 = 0x88;   /* IE */   sbit EA = 0xAF;   sbit ES = 0xAC;   sbit ET1 = 0xAB;   sbit EX1 = 0xAA;   sbit ET0 = 0xA9;   sbit EX0 = 0xA8;   /* IP */   sbit PS = 0xBC;   sbit PT1 = 0xBB;   sbit PX1 = 0xBA;   sbit PT0 = 0xB9;   sbit PX0 = 0xB8;   /* P3 */   sbit RD = 0xB7;   sbit WR = 0xB6;   sbit T1 = 0xB5;   sbit T0 = 0xB4;   sbit INT1 = 0xB3;   sbit INT0 = 0xB2;   sbit TXD = 0xB1;   sbit RXD = 0xB0;   /* SCON */   sbit SM0 = 0x9F;   sbit SM1 = 0x9E;   sbit SM2 = 0x9D;   sbit REN = 0x9C;   sbit TB8 = 0x9B;   sbit RB8 = 0x9A;   sbit TI = 0x99;   sbit RI = 0x98;   #endif   可以看到:“sfr P1=0x90;”.即定义符号Pl与地址0x90对应,熟悉80C51内部结构的读者不难看出,Pl口的地址就是0x90。   程序的第二行用符号P10来表示P1.0引脚,在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为P10,可是P10是否就是P1.0呢,所以必须给它们建立联系,这里使用了keil C的保留字sbit来定义。   main称为“主函数”,每一个C语言程序有且只有一个主函数,函数后面一定有一对大括号“{}”、在大括号里面书写其他程序。   Delay(500)的用途是延时,由于单片机执行指令的速度很快,如杲不进行延时,灯亮之后马上就灭,灭了之后马上就亮,速度太快,人眼根本无法分辨,所以需要进行适当的延时,这里采用自定义函数Delay(500),以延时0.5的时间。   需要说明的是, Delay(500)不是由keil C提供的,即你不能在任何情况下写这样一行程序以实现延时,如果在编写其他程序时写上这么一行,会发现编译通不过。注意观察本程序会发砚,在使用Delay(500)之前,第3行~9行已对Delay函数进行了事先定义,因此.在主程序中才能采用Delay(500).   Delay后面有一个小括号,小括号里有数据“500”,这个“500”被称为“实际参数”用它可以在一定范围内调整延时时间的长短,这里用“500”来要求延时时间为0.5s。
单片机c语言100例_单片机c语言编程300例

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/63465.html

(0)
上一篇 2024年 8月 28日 上午8:26
下一篇 2024年 8月 28日 上午8:32

相关推荐

关注微信