好文档 - 专业文书写作范文服务资料分享网站

(完整word版)51单片机c语言总结[1]

天下 分享 时间: 加入收藏 我要投稿 点赞

实例16 用p0口显示左移的运算结果

实例17万能逻辑电路 F=EY+Z逻辑函数p77图

1专门设计数字电路,实现逻辑功能

2通过单片机编程来实现逻辑功能软件即硬件

//实例17:\万能逻辑电路\实验

#include //包含单片机寄存器的头文件 sbit F=P1^4; //将F位定义为 P1.4 sbit X=P1^5; //将X位定义为 P1.5 sbit Y=P1^6; //将Y位定义为 P1.6 sbit Z=P1^7; //将Z位定义为 P1.7 void main(void) {

while(1) {

F=((~X)&Y)|Z; //将逻辑运算结果赋给F ; } }

实例18用右移实现流水灯

前提设p口为0xff八次右移一位高位丢弃低位补0 延迟用的变量因为要取大数所以必须用int 后面因为要快所以取char型变量

因为单片机运行快。所以led灯闪后要延迟。 C语言语句

If(S1==0)

P1=0x00;如果按键s按下接地(相应位为低电平), Swich 整型 break 三者紧密

While语句花括号运用和 一般情况下,在循环体中应该有让循环停止的语句。?? Do while 语句注意;

Do和while连用 while后面的分号不能丢,它表示整个循环语句的结束 Do循环语句 while(循环式) 尽量避免使用goto语句 P87页的程序软件即硬件

实例21用for语句实现鸣笛报警

T=1/f,所以要让蜂鸣器发出频率f的声音,只要让单片机输送周期为t的脉冲方波电平即可,让单片机没半个周期取反一次。半周期可通过延时来实现。可以通过循环的方式来实现延时,

P90一重循环消耗的机器数近似N=3*n 二重循环消耗的机器数近似N=3*n*m

例子,如果单片机的晶振频率为11.0592MHz,则机器的周期为1.085μs,要发出1600Hz的声音,就让单片机每半个周期312μs将输出电平取反一次,而延时312μs需要消耗机器周期数N=312/1.085≈286可以取300循环次数300/3=100次 Void delay(void) {

Unsigned char I;

For(i=0;i<100;i++) ;

}形成1600Hz的音频

相对应800Hz的音频可以i取200 Sbit sound=P1^5; Sound=0; 即可执行 Unsigned char i; While(1) i=0;??

数组是同类型的一组变量? Unsigned char code tab[] 应用却是tab【】??

字符型数组中的个字符数据在单片机中是以字符的ASCII 存放的,

正确的使用指针,可以有效地表示复杂的数据类型,动态分配内存,方便的使用字符串,有效地使用数组。

指针本身就具有地址还存在一个地址, Unsigned char*p; Unsigned char a; P=&a; 指针数组

Unsigned char a[]={0,1,2,3};

Unsigned char *a[]={&a[0],&a[1],&a[2],&a[3]}; 数组的指针

Unsigned char a[]={0,1,2,3}; Unsignde *p; P=&a[0];

P[i]+j 为P[i][j] 实例26未细看

返回值是通过return语句获得的。

如果函数无返回值,需要用void来声明。 数组作为函数参数

一个数组的名字表示该数组的首地址,所以用数组名作为函数的参数时。被传递的数

组的首地址,被调用函数的参数的形式须是定义为指针型变量。

用数组名作为函数的参数时,应该在主调函数和被调函数中都进行数组定义。定义的数组类型必须一致。编译器不检查形参数组的长度p109函数?? 函数型指针

一个函数在编译时,就分配了一个入口地址,这个入口地址就是函数的指针, 类型说明符 (*指针变量名)(形参列表) Int (*p)(int a,int b) (*p)(a,b)

这些需要思考p110页 。

P1=z/256;取得z的高八位

P2=z/256;取得z的低八位???? While(1)

;无限循环防止程序跑飞。

实例30用有参函数控制p0口8位流水灯的流水速度 P113实例31不实用??、

实例32 实例33是不错的c语言程序函数调用。练习c语言p115p116

实例34不错c语言程序p118

指针数组适合用来指向若干个字符串,尤其是各列字符串长度不一致的情形,这对于字符的液晶显示等很有意义。

实际运用液晶等显示器显示字符时,如果液晶的接口通过P0口和单片机连接,将各字符串送入p0口,实际上就是送入液晶显示器。 实例35

#include

P0=isalpha(’_’)?0xf0:0x0f;

内部函数文件instrins.h中有_crol_()函数

实例36;应用内部函数文件instrins.h中有_crol_()函数来点亮P3口8位流水灯 _crol_(15,2)

的返回值为00111100B=0x3c思考他的应用

实例37实例38感觉像是介绍函数以后????c语言应用程序卡那可可能看看

C语言编译预处理

宏定义c语言允许一个标示符来表示一个字符串,称为宏。 P125宏定义不是c语句,所以不需加分号。

可以用#undef命令来终止宏定义的作用域。即对#undef后面的无用。为防止歧义应加括号及时

带参数的函数宏和函数不同,函数是先求出实参表达式的值,然后代入形参,而带参数的宏只是进行简单的字符替换。 实例40文件包含应用举例

使用头文件为#include中有关特殊功能寄存器的定义

已将P3_0定义为P3.0引脚,直接应用P3_0就可以对P3口进行操作了。 实例41条件编译应用举例

常用的条件编译是根据某常量表达式的值的是否为真来控制编译

即#if 常量表达式 程序段1 #else

程序段2

#endif??思考好的应用

第五章单片机的定时器计数器 当加在

定时器计数器T0或T1用作计数器时,对外接晶振产生的振荡信号经12分频后,提供给计数器,作为计数器的脉冲输入,计数器以12分频后的脉冲周期为基本计数单位,对输入的脉冲进行计数,直至产生溢出。??? P136页到p140页有点不懂。工作方式

图p135T0或T1引脚上的外部脉冲信号出现一个由1到0的负跳变时,计数器加1,直至计数器溢出。

CPU是按顺序进行工作的。

实例42用计时器T0查询方式控制P2口的8位LED闪烁

T0工作于方式1,LED灯的闪烁周期为100ms,即亮50ms,熄灭50ms; 12分频即频率被12等分,周期即12除频率

定时器的初值设定需要进行计算,总而言之,就是定时器必须达到顶值即65536. 初值需要T0的高八位寄存器TH0和低八位寄存器TL0分别存储 存储方法及 TH0= /256; TL0= %6;

溢出标志位是否为1若为1表示时间已到,否则,等待。 //实例42:用定时器T0查询方式P2口8位控制LED闪烁

#include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数

**************************************************************/ void main(void) {

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%6; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff;

while(1)//无限循环等待查询 { while(TF0==0)//查询标志位是否溢出 ; TF0=0;

P2=~P2;按位取反,实现led灯的闪烁

TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%6; //定时器T0的高8位赋初值 } }

TFO 记忆flow溢出

TRO 记忆trigger引起启动 THO 记忆high高八位 TMOD 记忆mode 方式

实例43,用定时器t1查询方式控制单片机发出1kHz音频 //实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void) {

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%6; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0) ; TF1=0; sound=~sound; //将P3.7引脚输出电平取反

TH1=(65536-921)/256; //定时器T0的高8位赋初值 TL1=(65536-921)%6; //定时器T0的高8位赋初值 } }

//实例44:将计数器T0计数的结果送P1口8位LED显示

#include // 包含51单片机寄存器定义的头文件 sbit S=P3^4; //将S位定义为P3.4引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void) {

// EA=1; //开总中断

(完整word版)51单片机c语言总结[1]

实例16用p0口显示左移的运算结果实例17万能逻辑电路F=EY+Z逻辑函数p77图1专门设计数字电路,实现逻辑功能2通过单片机编程来实现逻辑功能软件即硬件//实例17:\万能逻辑电路\实验#include//包含单片机寄存器的头文件sbitF=P1^4;//将F位定
推荐度:
点击下载文档文档为doc格式
2dbrr9ymod8xswm2yhl07916095eiv009g3
领取福利

微信扫码领取福利

微信扫码分享