可以c语言编程的单片机,单片机的C语言编程

《单片机的C语言编程》由会员分享,可在线阅读,更多相关《单片机的C语言编程(17页珍藏版)》请在人人文库网上搜索。

1、3.1 C及C51语言概述 语言简洁,使用方便灵活。 可移植性好。 表达能力强。 表达方式灵活。 可进行结构化程序设计。 可以直接操作计算机硬件。 生成的目标代码质量高。,3.1 C51的数据类型 关键字 : 关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。 在C51中的关键字除了有ANSI C 标准的32个关键字外还根据51单片机的特点扩展了相关的关键字,见表中的C51编译器的扩展关键字。,关键字 :,数据类型的具体定义:,#include “reg51.h” sbit P0_0=P00; void main() P0_0=0; while(。

2、1); ,例1:利用MCS-51单片机的P0 引脚P0.0 引接一只LED,送“0”点亮,送“1”灭。则要求点亮,程序如下:,#include 代表的是加载头文件,头文件是C编译器中带的已经定义的函数的集合或自定义的一个函数的集合。 程序中加载一个reg51.h的文件,那么打开reg51.h里边的内容是什么呢? 如编码器在C盘下C51文件夹内,则REG51.h文件的路径是C:keilC51INCreg51.h。 例如: P1定义为 sfr P1 = 0 x90; 累加器A定义为 sfr ACC = 0 xE0; 定时模式TMOD定义为 sfr TMOD = 0 x89;,main()函数 也称。

3、为主函数 C语言都是从main()函数开始执行的。 前面加了一个void 是说明该函数是没有返回值的。 如果点量8个灯,可P00 x00 对引脚送0,则点亮单色灯,0 x00对应二进制数值00000000,所以该条语句是同时点亮了8只单色灯。 整个程序用括起来,形成了一个完整的C51程序。 上例中,符号P0(代表P0锁存器)已经在头文件“reg51.h”中有定义。P0_0表示P0.0引脚,它没有被事先定义好,所以需要使用sbit进行定义。,例2:P3.2引脚接一个按键,P1口接8只单色灯,单色灯0亮1灭,当有按键按下时8只单色灯高低4位交替闪亮一次。按键按下接收到0,否则为1。,#includ。

4、e “reg51.h” sbit key =P32; void main() unsigned char T1=0 x0F,T2=0 xF0,keyT; unsigned int i; for(;) keyT = key;,if( keyT) P1 = T1; /高4位亮低4位灭 for(i=0; i10000;i+) ; /延时作用 P1 = T2; /高4位灭低4位亮 for(i=0; i10000;i+) ; /延时作用 ,例2:P3.2引脚接一个按键,P1口接8只单色灯,单色灯0亮1灭,当有按键按下时8只单色灯高低4位交替闪亮一次。按键按下接收到0,否则为1。,3.2函 数 3.2.1。

5、函数定义 通常C 语言的编译器会自带标准的函数库,这些都是一些常用的函数。标准函数已由编译器软件商编写定义,使用者直接调用就可以了,而无需定义。同时C 语言允许使用者根据需要编写特定功能的函数,要调用它必须要先对其进行定义。 定义的模式如下: 函数类型 函数名称(形式参数表) 函数体 ,3.2.2 函数的调用 调用就是指一个函数体中引用另一个已定义的函数来实现所需要的功能,这时函数体称为主调用函数,函数体中所引用的函数称为被调用函数。 一个函数体中可以调用数个其它的函数,这些被调用的函数同样也可以调用其它函数,也可以嵌套调用。 在C51 语言中主函数main是不能被其它函数所调用的。,调用函数。

6、的一般形式如下: 函数名 (实际参数表) “函数名”就是指被调用的函数。 实际参数表可以为零或多个参数,多个参数时要用逗号隔开,每个参数的类型、位置应与函数定义时所的形式参数一一对应,它的作用就是把参数传到被调用函数中的形式参数,如果类型不对应就会产生一些错误。 调用的函数是无参函数时不写参数,但不能省后面的括号。,3.2.3 中断函数 中断服务函数只有在CPU响应中断时才会被执行,这在处理突发事件和实时控制是十分有效的。 关键字是interrupt,是函数定义时的一个必选项,只要在某个函数定义后面加上这个选项,这个函数就变成了中断服务函数。,定义中断服务函数时可以用如下的形式。 函数类型 函。

7、数名 (形式参数) interrupt n using n interrupt 缺省关键字是不可的,由它告诉编译器该函数是中断服务函数,并由后面的n 指明所使用的中断号。 n的取值范围为031,但具体的中断号要取决于芯片的型号,像AT89C51 实际上就使用04 号中断。 每个中断号都对应一个中断向量,具体地址为8n+3,中断源响应后处理器会跳转到中断向量所处的地址执行程序 编译器会在这地址上产生一个无条件跳转语句,转到中断服务函数所在的地址执行程序。,下表是8051的中断向量和中断号。,注意:函数不能直接调用中断函数;不能通过形参传递参数;但中断函数允许调用其它函数,两者所使用的寄存器组应相。

8、同。,include sbit P1_0=P10; void timer0(void)interrupt 1 using 1 /*T0中断服务程序入口*/ P1_0=!P1_0; TH0=-(1000/256); /*计数初值重装*/ TL0=-(1000%256); ,例3 设单片机的fosc=12MHz,要求用0的方式编程,在P1.0脚输出周期为2ms的方波。,void main(void) TMOD=0 x01; /*T0工作在定时器方式1*/ P1_0=0; TH0=-(1000/256); /*预置计数初值*/ TL0=-(1000%256); EA=1; /*CPU开中断*/ ET0=1; /*T0开中断*/ TR0=1; /*启动T0*/ dowhile(1); /*等待中断*/ ,例3 设单片机的fosc=12MHz,要求用0的方式编程,在P1.0脚输出周期为2ms的方波。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值