单片机C语言编程与&或|头文件常见

发布者:吾道明亮最新更新时间:2015-02-05 来源: 51hei关键字:单片机  C语言  编程  头文件 手机看文章 扫描二维码
随时随地手机看文章

一、常见问题
       1、头文件reg51.h和reg52.h其实是一样的,大家两个都可以用。
       2、main()前面的void可加可不加,反正都是无返回值函数。
       3、不是每一个程序都要用到死循环while(1),例如点亮一颗LED小灯就不用,只要执行一次就一直是高电平了不用循环。
       4、位操作和字节操作都能用来控制I/O口输出电平,位操作需要实现声明sbit,而字节操作则不用。 
       5、延时程序有两种a:循环延时;b:定时器精确延时
       6、如果定义的变量没有置初值,那么默认初值就是零。
       7、定义数组时(如:number[]={1,2,3,4,5,6, };)则结束时要加分号,每个元素之间用逗号隔开,[ ]内可加可不加元素个数。
       8、当程序比较复杂时,可将程序模块化,在主函数前定义,主函数内引用,但要注意全局变量和局部变量的区别。
       9、有的数组前面加code意思为将该数组写入FLASH中,数组内容不变,若不加code则写入ram中。
      10、能不能不进行位操作,直接用P0^0赋值?不可以,因为P0^0中有异或符号,所以必须进行位操作之后才可以正常赋值。
      11、转串芯片PL2303为国产芯片,在线仿真时波特率最高为14400,太高会造成程序下载失败。
      12、STC89C52程序存储空间是8K FLASH,当下载Hex文件时,有的同学可能注意到文件超过了8K,认为存储空间不够,这种说法是错误的,看程序所占空间大小应该在keil软件下,code后面的字节数。
                                      
二、头文件
       1、头文件如果keil软件库中没有的话,需要自己编写,并且要添加到所在工程中,或者直接复制一份到keil软件C51——>INC文件夹下,这样就可以直接引用头文件。 
三、变量
 
将函数模块化时经常用到静态变量。

四、与&,或|
有时在程序中也会看到这样的程序语言,a&=b;这样的语句相当于:a=a&b
同理,a|=b;这样的语句相当于:a=a|b
五、中断程序实例:秒表
#include
typedef  unsigned char   uint8;
typedef  unsigned int    uint16;
typedef  unsigned long   uint32; 
code uint8 number[] = {0xc0,0xf9,0xa4,0xb0,     //code 为写入flash中
                                     0x99,0x92,0x82,0xf8,
                                    0x80,0x90,0x88,0x83,
                                    0xa7,0xa1,0x86,0x8e};
uint8 a[6];                 //前无code,为写入ram
uint16 counter = 0;
sbit ENLED = P1^4;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;

void timer1_init()      //定时器函数
{
 TMOD |= 0x10;      //选择定时器模式
 TMOD &= 0xdf;      
 TH1   = 0xFC;         //定时间初始值
 TL1   = 0x67;
 TR1   = 1;               //开始计时
}
void int_init()           //中断函数
{
 ET1 = 1;                 //选择中断1
 EA  = 1;                //开启中断功能
}
void refresh_led()            //刷新函数
{
   static uint8 j = 0;        //静态变量,第一次定义有效,整个函数均保留
  switch(j)
    {
     case 0: ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[0]];break;
  case 1: ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[1]];break;
  case 2: ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[2]];break;
  case 3: ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[3]];break;
  case 4: ADDR0 = 0;ADDR1 = 0;ADDR2 = 1;j++;P0 = number[a[4]];break;
  case 5: ADDR0 = 1;ADDR1 = 0;ADDR2 = 1;j = 0;P0 = number[a[5]];break;
  default: break;
  }
 
}
main()                                    //主函数
{
 ENLED = 0; ADDR3 = 1;       //设置三八译码器的状态
 timer1_init();                           //定时器函数
 int_init();                                  //中断开启
 while(1);                                  //死循环,保证程序处在运行状态
 
}
void interrupt_timer1() interrupt 3     //中断函数,每次定时溢出时就会触发中断
{
   static uint32 sec = 0;                     
   TH1 = 0xFC;
   TL1 = 0x67;
   counter++;
   if(counter == 1000)
   {
    sec++;
  counter = 0;
  a[0] = sec%10;
  a[1] = sec/10%10;
  a[2] = sec/100%10;
  a[3] = sec/1000%10;
  a[4] = sec/10000%10;
  a[5] = sec/100000%10;
   }
   refresh_led();
      
}
六、头文件的编写
形式为: #ifndef   _KEY_H_
               #define   _KEY_H_
                 ……
               #endif
编写好的头文件需要放到keil软件所在工程下。
关键字:单片机  C语言  编程  头文件 引用地址:单片机C语言编程与&或|头文件常见

上一篇:keil软件使用的详细步骤
下一篇:芯片设计:modelsim do脚本

推荐阅读最新更新时间:2024-03-16 13:53

使用单片机实现一键多功能按键识别的设计实验说明
如图所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。 2.电路原理图 图4.9.1 3.系统板上硬件连线 (1. 把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上; (2. 把“单片机系统”区域中的P1.0-P1.4端口用8芯排线
[单片机]
使用<font color='red'>单片机</font>实现一键多功能按键识别的设计实验说明
意法半导体与中国大学合作开发32位嵌入式系统
ST 为学生培训用嵌入式系统开发实验室提供微控制器、开发工具和产品支持 北京, 2006 年 9 月 12 日 —— 微控制器设计开发的领导厂商意法半导体(纽约证券交易所: STM) ,今天宣布与北京邮电大学 (BUPT) 和北京交通大学 (BJTU) 签订了合作协议,分别在两所大学校园内建立一个微控制器( MCU )实验室,这是 ST 与中国大学携手开发嵌入式应用技术和培训 电子 工程专业学生的大规模合作计划的重要组成部分。 作为 32 位微控制器的主导厂商之一, ST 将向这两所大学提供先进的 32 位 STR7 ARM 微控制器以及开发工具,使学生有机会
[嵌入式]
S5PV210串口通信编程实战-2
1、串口Tx、Rx对应的GPIO初始化 给GPA0CON的相应bit位赋值为相应值,用C语言位操作完成。 void uart_init( void ) { //初始化Tx、Rx对应的GPIO引脚 rGPA0CON &= ~( 0xff 0 ); //把寄存器的bit0 ~ bit 7全部清零 rGPA0CON |= 0x00000022; //0b0010, Rx、Tx } 2、UCON、ULCON、UMCON、UFCON等主要控制寄存器 依据上节中分析的值进行依次设置即可 void uart_init( void ) { //初始化Tx、Rx对应的GPIO引脚 rGPA0CON &= ~( 0xff 0 ); //把寄存
[单片机]
S5PV210串口通信<font color='red'>编程</font>实战-2
单片机汇编中断程序(定时器中断)
;首相,介绍一下51单片机的定时计数器,51有两个定时计数器,分别为T0,T1,基本一样, ;有一点不同,下面我们介绍定时计数器T0 ;了解8051的timer0中断的程序写法,用中断法产生定时 ;上面显示的是proteus仿真图,下面的是源程序 ;说明:(源程序中的终端入口地址很重要(这个是固定的),程序中断时,会在对应中断固定的 ;入口地址进入,因为规定的相隔入口间的空进有限,只能用跳转指令跳转,最终用RETI强制返回 ;这个程序把所有的中断入口地址都写上了,没有用到的,用RETI直接屏蔽) ;运行结果是使led灯明一下,暗一下。 COUNT EQU 9217;对于11.0592的晶振来说,延时1
[单片机]
<font color='red'>单片机</font>汇编中断程序(定时器中断)
STC15系列单片机-环境监控设备
main.c /** * 产品名称:环境监控设备 * 产品定义: * (1)单片机每隔1秒通过DS18B20温度传感器采集一次温度。 * (2)单片机每隔200毫秒采集一次DS1302时钟芯片的时间。 * (3)通过数码管实时显示时间,格式为日-小时-分-秒。 * (4)通过串口向上位机发送格式提示字符串,设置温度上限和下限; * 格式为xx-yy * (5)可以通过串口设置温度上限和下限。 * (6)单片机将每次采集到的温度实时通过串口传送给上位机; * 如果温度超过阈值,都将给出警告提示。 * 版本:debug * 完成时间:2015.4.5 17:00 * 作者:宁静致远 */ #incl
[单片机]
STM8L编程环境官方库+STVD+COSMIC+ST-Link
1.软件下载 (1)到ST官网下载最新版STVD,搜索STVD下载安装sttoolset。 (2)下载COSMIC,地址 http://www.amobbs.com/forum.php?mod=viewthread&tid=3229327 2.编程仿真工具 官方ST-Link,100左右。或者买第三方做的ST-Link 3.固件库下载 到官网上下载芯片对应的固件库,我用的是STM8L151G6U6。 下载方法,st官网- 产品- 微控制器- STM8 8位MCU- STM8L系列- 资源列表中点软件- STM8 Embedded Software- STM8L15x/16x/05x/AL3Lx/AL31
[单片机]
单片机智能温控风扇设计 带智能调速人体感应
51单片机做的温空风扇 数码管显示 带人体感应模块,实现智能调速,功能非常强大,这是一个本科的毕业设计,毕业论文 开题报告 源码 原理图 还有proteus仿真等等都是一应俱全. 还有答辩常见问题解答,焊接注意事项和调试讲解,以及详细的制作过程. 温空风扇实物图: 智能风扇仿真截图: 温空风扇的DXP格式 protel99格式 温控风扇原理图: DXP格式用 Altium designer Summer 软件打开 protel99格式用 protel99SE 软件打开 PDF格式用 PDF 软件打开 Word格式用 Word 或用WPS 软件打开 4种格式的原理图都内容是一样的 只是打开方式不同 相关论文
[单片机]
<font color='red'>单片机</font>智能温控风扇设计 带智能调速人体感应
一种基于单片机的函数发生器的设计实现
【摘 要】 介绍一种由单片机控制的采用MAX038芯片构成的高频函数发生器,它的特点是输出精度高,频率范围宽,失真小。 关键词:函数发生器,频率,占空比 1 引 言   在自动控制系统设计及调试过程中,不同频率的正弦波、三角波和方波常作为信号源,应用十分方便。过去常由分立元件及集成运放构成振荡器,后来出现的ICL8038其最高频率仅能达到100kHz。而MAX038芯片性能更好,最高频率可达20MHz,且三种波形由同一端输出。单片机控制品质卓越,基于单片机的函数发生器运行可靠,操作方便。 2 高频信号发生器芯片MAX038简介   MAXIM公司生产的MAX038芯片是一种高频精密的函数发生器,可产生三角波、锯齿波、正
[工业控制]
一种基于<font color='red'>单片机</font>的函数发生器的设计实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved