当前位置:文档之家› 51单片机c语言总结.

51单片机c语言总结.

51单片机c语言总结.
51单片机c语言总结.

入门有针对性的解决一些简单的实际问题,边理论边实践学一样会一样

基本实验:LED流水灯,数码管显示,键盘控制,音乐播放,继电器控制I2C通信实验,串口通信实验,红外线遥控信号解码实验等

单片机的定义分类和内部组成

1单片机就是中央处理器CPU,随机存储器RAM。只读存储器ROM。定时、计数器和各种输入输出接口I/o接口电路等部件集成在一块电路芯片上的微型计算机。

2,1分类按制造工艺分:HMOS和CHMOS CHMOS包括80c51等中间加了C功耗要小适合便携式手提式和野外作业。

2分类按不同容量的存储器配置分:51子系列和52子系列

51表示单片机最后一位数字为1作为标志。片内带有4KbROM或EPROM(Erasable Programmable ROM,可擦除可编程ROM,128BRAM,两个16位定时器/计数器和5个中段器52系列是增强型各项指标都高。

AT89S51是AT89C51的升级版支持ISP在线更新程序ISP(Internet Service Provider 内部集成看门狗计时器等。

3.1串行接口就是接口数据传送

3.2中断控制系统接收中断请求如定时时间到,需要鸣笛报警类似stop to do 停下来去执行ROM中特定的每段程序,执行完后再继续执行先前中断的程序

时钟电路控制节拍工作。

一个典型的单片机应用系统包括输入电路,单片机,输出电路

把他想象成电脑。

单片机的应用:

p5

十六进制A10B11C12D13E14F15

记A10和D13点得13点F15不是F16

十六进制加H

逻辑数据的运算

逻辑与。。。两个输入一个输出中间加一个恒定5v电压

有0为0,全1出1

逻辑或有1为1,全0出0;

字长通常与计算机内部的寄存器和运算器数据总线的宽度一致

实例1功能感受protues仿真单片机播放《渴望》主题曲

运用protues打开仿真原理图。

对单片机进行处理编辑edit component,选取目标文件hex

Clock frequency 时钟频率

Ok

原理图编辑窗口没有滚动条,可通过预览窗口该表原理图的可视范围。

Protues双击右键删除

先单击鼠标右键,可通过鼠标左键可以编辑元器件的属性

鼠标右键来删除画错的连线

中键缩放原理图

新建即保存新建设计文件

Junction dot mode连接点

Subcircuit mode 子电路lab用总线时会用到

Terminals mode 终端接口,有VCC地输出输入等接口

Device pins mode 器件引脚用于绘制各种引脚。

Graph mode 仿真图表,用于各种分析,如noise analysis

Tape recorder mode录音机

Generator mode 信号发生器

Voltage probe mode 电压探针仿真图表用

Current probe mode 电流探针仿真图表用

Virtual instruments mode虚拟仪表有示波器可显示工作波形

Resistors 电阻

Capacitors电容

Crystal晶振

Radianl electrolytic圆柱形电解电容

Keywords输入resistors 470r或功率先选择元器件后放元器件

Led+yellow

Drag object 拖动对象

Editi properties 编辑属性

Rotate clockwise 顺时针旋转90°

Rotate anti-clockwise 逆时针旋转90°

X-mirror 水平翻转

Y-mirror 垂直翻转

删可以右键双击

双击鼠标左键编辑label

放置电源和地必须编辑正确的label如VCC地GND

各元器件引脚通过总线的连接并不表示真正意义上的电气连接,需要添加网络标号。

要运行双击单片机

基本

电源5V

振荡电路:单片机是一种时序电路,必须施加脉冲信号才能工作。在它的内部有一个时钟产生电路,只要接上两个电容和一个晶振即可正常工作。P30

复位电路;启动后让单片机从初始状态开始执行程序。

EA一横:接正电源端,表示使用内部程序存储器。

注意:观察仿真效果时,晶振电路,复位电路和EA引脚和电路的连接可以省略。

Keil软件源程序后缀。C必须手工输入,表示为c语言程序,让keilc51采用对应的c语言的方式来编译源程序。

#include包含51单片机寄存器定义的头文件

将新建的源程序文件加载到项目管理器右击source group文件add c文件

单片机不能处理c,必须将c转换成二进制或十六进制代码,汇编或编译。

用鼠标右键点击target 进入options for target 确认output选项中create hex

重新构造所有目标

程序烧录器及烧录软件的使用

单片机软硬件系统仿真成功后,要真正投入实际应用,必须将程序烧写入单片机芯片,A51程序烧录器和

先将COM接口(用作数据通信)与计算机的COM接口(RS-232)连接好,然后将单片机安插在烧录器的插座中,再用一根USB线将USB接口与计算机的USB接口连接,让计算机通过这根USB线向烧录器提供+5V电源

使用烧录器前,手动设置一些,参数标签页,根据COM口,设置好串口,波特率设置为28800;点击自动擦除器件命令,点击打开文件命令选择单片机文件十六进制文件hex 再点击打开点击自动写器件。

实例4用单片机控制一个灯闪烁

Led灯亮存在电压差和正向偏置

延迟函数

Void main(void)// 两个void分别表示无须返回值和没有参数传递

{

Unsigned int i;// 定义无符号整数,最大65535

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

; 只有一个分号表示什么都不做,等待一个机器周期

}

0x中的0是数字0,而不是字母O

郁闷一编写keil时,

文档第一行必须是#include

虚拟仪表

示波器oscilloscope

Protues示波器面板?及使用

单片机需要一个时钟信号送给内部个电路,才能使他们有节拍的工作,时钟信号的频率由外部振荡电路的晶振频率决定,51系列单片机的机器周期是由12个振荡周期组成。

指令周期:单片机执行一条指令的时间。

时钟频率越低,延时的时间就越长,灯闪烁的速度就越慢。

实例5 将p1口状态送入p0口p2口p3口

利用单片机工作速度快的特点,无限循环可以让单片机不停地把p1口的电平状态送到p0口p2口和p3口。

引脚接地低电平被输入到p口

实例6使用p3口流水点亮8位led

记忆,0xfe 11111110 0xfd 11111101 0xfb 11111011 0xf7 11110111

0xef 11101111 0xdf 11011111 0xbf10111111 0x7f 01111111 实例7通过对p3口地址的操作流水点亮8位led

单片机都有固定的地址,记忆:张三在教室的第2排第5列

老师可以说清张三回答问题也可以说请第2排第5列的同学答题。

Sfr x=0xb0;通过关键字sfr将x定义为p2的地址0xb0

定义后,程序中对x的操作就相当于对地址0xb0即p3的操作

类似于指针

P3口的固定地址是BOH

MCS-51单片机存储器的基本结构

它有两种1即程序存储器和2数据存储器

从物理MSC-51有4个存储地址空间,即片内程序存储器和片外程序存储器程序存储器受EA一横外接电平的控制。

1当EA一横接地时,单片机只能使用外部程序存储器

2当EA一横接+5v是单片机先使用内部程序存储器,容量不够时自动使用外部程序存储器。

特殊功能寄存器

单片机的复位电路

P54页???

单片机C语言开发基础

#include

C注释

1种采用/*。。。*/可以注释多行内容

2种采用//但只能注释一行

ANSI标准定义的关键字

P57记忆思考

P58跳过

数据类型表p59页

指针型数据

位类型数据

空类型数据

延时函数不需要返回值。

X++先用x的值,再让x加1

逻辑与&&逻辑或||逻辑非!

按位与& 25&77=9

按位或| 25|77=93

按位异或^ 相异为1,相同出0

按位取反~ 有0出1,有1出0

左移运算符<< 将一个二进制数的各位全部左移若干位,移动的过程中,高位丢弃,低位补0. w=0x3a 00111010B w<<2,w=11101000B

>>低位丢弃,高位补0

赋值运算符

逗号运算符

条件运算符

强制转换运算符???

实例8用不同数据类型的数据控制led的闪烁

使用无符号整型数据和无符号字符数据来设计延时函数。

由于整型数据占两个字节,而无符号字符型数据仅占一个字节,因此对无符号整型数据进行操作花费的时间就要长一些,整型数据要实现100次循环,消耗的时间约800个机器周期。无符号100占300个。为了提高运行效率,尽可能用无符号字符型数据。

实例9 用p0口和p1口分别显示加法和减法运算结果

其实就是利用二进制的单位数值进行亮1不亮0的表示

乘法除法就是利用二进制转化为十进制再进行处理

实例12用自增运算控制p0口8位ked的闪烁花样

只要送到p0口的数值发生变化,p0口8位led点亮的状态就会发生变化。可以先将变量的初值送到p0口延迟一段时间,再利用自增运算使变量加1,然后将新的变量值送到p0口并延时一段时间,即可使8位led的闪烁花样不断变化,Unsigned char I;定义无符号字符型变量,其值不超过255

运用变量的值变化和将变量的值送到p口用来变化。

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

实例13用p0口显示逻辑与的运算

P0=(4>0)&&(9>0xab)=1&&0=0;将运算结果送到p0口

实例14用p0口显示条件运算的结果

P0=(8>4)?8:4; P0=8=00001000B

实例15;用p0口显示按位异或运算结果

异或相异出1,相同出0;记忆异性才能很火热的做出子女

P0=0xa2^0x3c异或要做必须上顶^ 很公平应用

实例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= %256;

溢出标志位是否为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)%256; //定时器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)%256; //定时器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)%256; //定时器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)%256; //定时器T0的高8位赋初值}

}

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

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

/**************************************************************

函数功能:主函数

**************************************************************/

void main(void)

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

// ET0=1; //定时器T0中断允许

TMOD=0x02; //使用定时器T0的模式2

TH0=256-156; //定时器T0的高8位赋初值

TL0=256-156; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1)//无限循环等待查询

{

while(TF0==0) //如果未计满就等待

{

if(S==0) //按键S按下接地,电平为0

P1=TL0; //计数器TL0加1后送P1口显示}

TF0=0; //计数器溢出后,将TF0清0

}

}

第六章单片机的中断系统

中断系统

类似写作业

定时器计时器实际上就是中断源。

MCS51单片机提供5个中断源。

外部中断INT0一横编号0 由P3.2引脚输入

定时器T0 编号1

外部中断INT1一横编号2 由P3.3引脚输入

定时器T1 编号3

串行口通信中断RI或TI 编号4

自然优先级从上到下逐级递减。

P150 p151页未看

void Time(void) interrupt 1 using 0

{

}

//实例46:用定时器T0的中断实现长时间定时

#include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

unsigned char Countor; //设置全局变量,储存定时器T0中断次数/**************************************************************

函数功能:主函数

**************************************************************/

void main(void)

EA=1; //开总中断

ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式2

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

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

TR0=1; //启动定时器T0

Countor=0; //从0开始累计中断次数

while(1)//无限循环等待中断

;

}

/**************************************************************

函数功能:定时器T0的中断服务程序

**************************************************************/

void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数

//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

{

Countor++; //中断次数自加1

if(Countor==20) //若累计满20次,即计时满1s

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

Countor=0; //将Countor清0,重新从0开始计数

}

TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

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

}

定时器T0工作于方式1时,最大可计脉冲数次数为65536,对于11。0592MHz的时钟频率。一个脉冲的宽度为1.085μs,则最大计时长度只有1.085×65536=71107μs即大约71ms,

要想计时更长时间,采用软件计时的方法

设置一个变量counter 来存储定时器T0的中断次数,即每产生一次中断,使变量counter自加1,如果T0每50ms中断一次,那当counter自加20次时,所及时间为1s。

中断一次就要重新赋值一次

控制两个LED灯以不同的周期闪烁,第一个LED亮灭时间为100ms,第二个LED 亮灭时间为400ms,所以需要设置两个变量counter1 和counter2来分别统计中断次数,且都为最小的整数倍。

//实例47:用定时器T1中断控制两个LED以不同周期闪烁

#include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

sbit D2=P2^1; //将D2位定义为P2.1引脚

unsigned char Countor1; //设置全局变量,储存定时器T1中断次数

unsigned char Countor2; //设置全局变量,储存定时器T1中断次数

/**************************************************************

函数功能:主函数

**************************************************************/

void main(void)

{

EA=1; //开总中断

ET1=1; //定时器T1中断允许

TMOD=0x10; //使用定时器T1的模式1

TH1=(65536-46083)/256; //定时器T1的高8位赋初值

TL1=(65536-46083)%256; //定时器T1的高8位赋初值

TR1=1; //启动定时器T1

Countor1=0; //从0开始累计中断次数

Countor2=0; //从0开始累计中断次数

while(1)//无限循环等待中断

;

}

/**************************************************************

函数功能:定时器T1的中断服务程序

**************************************************************/

void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数

//其后的3为定时器T1的中断编号;0表示使用第0组工作寄存器

7

Countor1++; //Countor1自加1

Countor2++; //Countor2自加1

if(Countor1==2) //若累计满2次,即计时满100ms

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

Countor1=0; //将Countor1清0,重新从0开始计数

}

if(Countor2==8) //若累计满8次,即计时满400ms

{

D2=~D2; //按位取反操作,将P2.1引脚输出电平取反

Countor2=0; //将Countor1清0,重新从0开始计数

}

TH1=(65536-46083)/256; //定时器T1的高8位重新赋初值

TL1=(65536-46083)%256; //定时器T1的高8位重新赋初值

}

实现方法

先开总中断EA 分支中断ET?,选择方式,赋初值,启动定时器T?,声明

音调与频率的关系

由于单片机的输入输出口只有高电平1和低电平0,因此向蜂鸣器输送的电平信号实际是就是该音频的方波。例如中音频率523Hz,他的周期为1÷523秒,即1。93ms 只要向蜂鸣器输送周期为1.91ms的脉冲方波电平信号就能发出523Hz的音调,该方波的半周期为1.91÷2=0.995ms。为此,需要利用定时器的中断,让输送给蜂鸣器的电平信号每0。955ms取反一次即可,由于本书使用的单片机晶振为11.0952mhz,他的机器周期为12×(1÷11。0592)=1.085μs。因此需要的机器周期总数为

995μs÷1.085μs=880

定时器的定时常数为880

C=10^6μs除2f÷1.085μs=460830÷频率

THO=(8192-C)÷32???

每分钟为72节拍,每节拍1000×60ms÷72=833ms

//实例49:用定时器T0的中断实现"渴望"主题曲的播放

#include //包含51单片机寄存器定义的头文件

sbit sound=P3^7; //将sound位定义为P3.7

unsigned int C; //储存定时器的定时常数

//以下是C调低音的音频宏定义

#define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz

#define l_re 286 //将“l_re”宏定义为低音“2”的频率286Hz

#define l_mi 311 //将“l_mi”宏定义为低音“3”的频率311Hz

#define l_fa 349 //将“l_fa”宏定义为低音“4”的频率349Hz

#define l_sao 392 //将“l_sao”宏定义为低音“5”的频率392Hz

#define l_la 440 //将“l_a”宏定义为低音“6”的频率440Hz

#define l_xi 494 //将“l_xi”宏定义为低音“7”的频率494Hz

//以下是C调中音的音频宏定义

#define dao 523 //将“dao”宏定义为中音“1”的频率523Hz

#define re 587 //将“re”宏定义为中音“2”的频率587Hz

#define mi 659 //将“mi”宏定义为中音“3”的频率659Hz

#define fa 698 //将“fa”宏定义为中音“4”的频率698Hz

#define sao 784 //将“sao”宏定义为中音“5”的频率784Hz

#define la 880 //将“la”宏定义为中音“6”的频率880Hz

#define xi 987 //将“xi”宏定义为中音“7”的频率523H

//以下是C调高音的音频宏定义

#define h_dao 1046 //将“h_dao”宏定义为高音“1”的频率1046Hz

#define h_re 1174 //将“h_re”宏定义为高音“2”的频率1174Hz

#define h_mi 1318 //将“h_mi”宏定义为高音“3”的频率1318Hz

#define h_fa 1396 //将“h_fa”宏定义为高音“4”的频率1396Hz

#define h_sao 1567 //将“h_sao”宏定义为高音“5”的频率1567Hz

#define h_la 1760 //将“h_la”宏定义为高音“6”的频率1760Hz

#define h_xi 1975 //将“h_xi”宏定义为高音“7”的频率1975Hz

/*******************************************

函数功能:1个延时单位,延时200ms

******************************************/

void delay()

{

unsigned char i,j;

for(i=0;i<250;i++)

for(j=0;j<250;j++)

;

}

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

unsigned char i,j;

//以下是《渴望》片头曲的一段简谱

unsigned int code f[]={re,mi,re,dao,l_la,dao,l_la, //每行对应一小节音符

l_sao,l_mi,l_sao,l_la,dao,

l_la,dao,sao,la,mi,sao,

re,

mi,re,mi,sao,mi,

l_sao,l_mi,l_sao,l_la,dao,

l_la,l_la,dao,l_la,l_sao,l_re,l_mi,

l_sao,

re,re,sao,la,sao,

fa,mi,sao,mi,

la,sao,mi,re,mi,l_la,dao,

re,

mi,re,mi,sao,mi,

l_sao,l_mi,l_sao,l_la,dao,

l_la,dao,re,l_la,dao,re,mi,

re,

l_la,dao,re,l_la,dao,re,mi,

re,

0xff}; //以0xff作为音符的结束标志

//以下是简谱中每个音符的节拍

//"4"对应4个延时单位,"2"对应2个延时单位,"1"对应1个延时单位unsigned char code JP[ ]={4,1,1,4,1,1,2,

2,2,2,2,8,

4,2,3,1,2,2,

10,

4,2,2,4,4,

2,2,2,2,4,

2,2,2,2,2,2,2,

10,

4,4,4,2,2,

4,2,4,4,

4,2,2,2,2,2,2,

10,

4,2,2,4,4,

2,2,2,2,6,

4,2,2,4,1,1,4,

10,

4,2,2,4,1,1,4,

10

};

EA=1; //开总中断

ET0=1; //定时器T0中断允许

TMOD=0x00; // 使用定时器T0的模式1(13位计数器)

while(1) //无限循环

{

i=0; //从第1个音符f[0]开始播放

while(f[i]!=0xff) //只要没有读到结束标志就继续播放

{

C=460830/f[i];

TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法

TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法

TR0=1; //启动定时器T0

for(j=0;j

delay(); //延时1个节拍单位

TR0=0; //关闭定时器T0

i++; //播放下一个音符

}

}

}

/***********************************************************

函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频的方波

************************************************************/

void Time0(void ) interrupt 1 using 1

{

sound=!sound; //将P3.7引脚输出电平取反,形成方波

TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法

TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法}

实例51

本例用单片机U1从P1。4引脚输出正脉宽为250μs的方波,再利用单片机U2的into引脚检测,验证方波的正脉冲宽度,有点没看懂

//实例51-2:定时器T0的模式2测量正脉冲宽度

#include //包含51单片机寄存器定义的头文件

sbit ui=P3^2; //将ui位定义为P3.0(INT0)引脚,表示输入电压

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x0a; // TMOD=0000 1010B,使用定时器T0的模式2,GATE置1 EA=1; //开总中断

ET0=0; //不使用定时器T0的中断

TR0=1; //启动T0

TH0=0; //计数器T0高8位赋初值

TL0=0; //计数器T0低8位赋初值

while(1) //无限循环,不停地将TL0计数结果送P1口

{

while(ui==0) //INT0为低电平,T0不能启动

;

TL0=0; //INT0为高电平,启动T0计时,所以将TL0清0

while(ui==1) //在INT0高电平期间,等待,计时

;

P1=TL0; //将计时结果送P1口显示

}

}

//实例51-1:输出正脉宽为250微秒的方波

#include //包含51单片机寄存器定义的头文件

sbit u=P1^4; //将u位定义为P1.4

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x02; //TMOD=0000 0010B,使用定时器T0的模式2 EA=1; //开总中断

ET0=1; //定时器T0中断允许

TH0=256-250; //定时器T0的高8位赋初值

TL0=256-250; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1) //无限循环,等待中断

;

}

/**************************************************************

函数功能:定时器T0的中断服务程序

**************************************************************/

void Time0(void) interrupt 1 using 0 //"interrupt"声明函数为中断服务函数

{

u=~u; //将P1.4引脚输出电平取反,产生方波

}

第7章

MCS51单片机串行4中工作方式??、

为了能够在计算机端看到单片机发出的数据,较好的方法是借助于调试软件“串口调试助手”

第8章

P197页图

第9章

I^2C总线是Inter Integrated Circuit Bus 内部集成电路总线

千万不要认为只要程序对了,单片机就可以永远正确运行,实际工作环境的各种干扰会导致单片机死机。

X5045

具有上电复位和降压管理的功能,还具有看门狗定时器和具有块保护功能的串行EEPROM。

上电复位;上电就产生复位信号,

看门狗;规定时间没有电平信号就产生复位信号,利用该功能可以让单片机死机后自动重新复位

第10章

A/D转换器;逐次逼近(常用)双积分牛但慢并行

红外信号接收

红外发射部分包括键盘矩阵,编码调制LED红外发送器接收器包括光电转换放大器解调电路解码电路

中断定时器程序其实隐藏了调用。

定时中断一次还需重新赋值一次。

void Time0(void) interrupt 1 using 1每个字符都要空格

LED0=!LED0; //P3.0引脚取反

While(1)前面赋值确定原先的状态

判断端口是否是低电平应该这样if(S1==0)

而不是if(S1=0)

函数功能:键盘扫描子程序

**************************************************/

void key_scan(void)

{

if((P1&0xf0)!=0xf0) //第一次检测到有键按下

{

delay30ms(); //延时20ms再去检测

if(S1==0) //按键S1被按下

keyval=1;

if(S2==0) //按键S2被按下

keyval=2;

if(S3==0) //按键S3被按下

keyval=3;

if(S4==0) //按键S4被按下

keyval=4;

sbit S1=P1^4; //将S1位定义为P1.4引脚

sbit S2=P1^5; //将S2位定义为P1.5引脚

sbit S3=P1^6; //将S3位定义为P1.6引脚

sbit S4=P1^7; //将S4位定义为P1.7引脚

有零则与逻辑与一起必然为零}

最新-单片机原理及应用期末考试必考知识点重点总结 精品

单片机概述 单片机是微单片微型计算机的简称,微型计算机的一种。 它把中央处理器(CPU),随机存储器(RAM),只读存储器(ROM),定时器\计数器以及I\O 接口,串并通信等接口电路的功能集成与一块电路芯片的微型计算机。 字长:在计算机中有一组二进制编码表示一个信息,这组编码称为计算机的字,组成字的位数称为“字长”,字长标志着精度,MCS-51是8位的微型计算机。 89c51 是8位(字长)单片机(51系列为8位) 单片机硬件系统仍然依照体系结构:包括CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、输入设备和输出设备、内部总线等。 由于一块尺寸有限的电路芯片实现多种功能,所以制作上要求单片机的高性能,结构简单,工作可靠稳定。 单片机软件系统包括监控程序,中断、控制、初始化等用户程序。 一般编程语言有汇编语言和C语言,都是通过编译以后得到机器语言(二进制代码)。 1.1单片机的半导体工艺 一种是HMOS工艺,高密度短沟道MOS工艺具有高速度、高密度的特点; 另一种是CHMOS工艺,互补金属氧化物的HMOS工艺,它兼有HMOS工艺的特点还具有CMOS的低功耗的特点。例如:8181的功耗是630mW,80C51的功耗只有110mW左右。1.2开发步5骤: 1.设计单片机系统的电路 2.利用软件开发工具(如:Keil c51)编辑程序,通过编译得到.hex的机器语言。 3.利用单片机仿真系统(例如:Protus)对单片机最小系统以及设计的外围电路,进行模拟的硬软件联合调试。 4.借助单片机开发工具软件(如:STC_ISP下载软件)读写设备将仿真中调试好的.hex程序拷到单片机的程序存储器里面。 5.根据设计实物搭建单片机系统。 2.1MCS-51单片机的组成:(有两个定时器) CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。 工作过程框图如下:

(完整版)单片机知识点总结

单片机考点总结 1.单片机由CPU、存储器及各种I/O接口三部分组成。 2.单片机即单片微型计算机,又可称为微控制器和嵌入式控制器。 3.MCS-51系列单片机为8位单片机,共40个引脚,MCS-51基本类型有8031、8051 和8751. (1)I/O引脚 (2)8031、8051和8751的区别: 8031片内无程序存储器、8051片内有4KB程序存储器ROM、8751片内有4KB程序存储器EPROM。 (3)

4.MCS-51单片机共有16位地址总线,P2口作为高8位地址输出口,P0口可分时复用 为低8位地址输出口和数据口。MCS-51单片机片外可扩展存储最大容量为216=64KB,地址范围为0000H—FFFFH。(1.以P0口作为低8位地址/数据总线;2. 以P2口作为高8位地址线) 5.MCS-51片内有128字节数据存储器(RAM),21个特殊功能寄存器(SFR)。(1)MCS-51片内有128字节数据存储器(RAM),字节地址为00H—7FH; 00H—1FH: 工作寄存器区; 00H—1FH: 可位寻址区; 00H—1FH: 用户RAM区。 (2)21个特殊功能寄存器(SFR)(21页—23页);

(3)当MCS-51上电复位后,片内各寄存器的状态,见34页表2-6。 PC=0000H, DPTR=0000H, Acc=00H, PSW=00H, B=00H, SP=07H, TMOD=00H, TCON=00H, TH0=00H, TL0=00H, TH1=00H, TL1=00H, SCON=00H, P0~P3=FFH 6. 程序计数器PC:存放着下一条要执行指令在程序存储器中的地址,即当前PC值或现行值。程序计数器PC是16位寄存器,没有地址,不是SFR. 7. PC与DPTR的区别:PC和DPTR都用于提供地址,其中PC为访问程序存储器提供地址,而DPTR为访问数据存储器提供地址。 8. MCS-51内部有2个16位定时/计数器T0、T1,1个16位数据指针寄存器DPTR,其中MOVE DPTR, #data16 是唯一的16位数据传送指令,用来设置地址指针DPTR。(46页) 定时/计数器T0和T1各由2个独立的8位寄存器组成,共有4个独立寄存器:TH1、TL1、TH0、TL0,可以分别对对这4个寄存器进行字节寻址,但不能吧T0或T1当作1个16位寄存器来寻址。即:MOV T0,#data16 ;MOV T1,#data16 都是错的,MOV TH0,#data;MOV TL0,,#data是正确的。 9.程序状态字寄存器PSW(16页) (1)PSW的格式: D7 D6 D5 D4 D3 D2 D1 D0 PSW D0H (2)PSW寄存器中各位的含义; Cy:进位标志位,也可以写为C。 Ac:辅助进位标志位。

单片机原理及应用知识点汇总复习

单片机原理及应用知识点汇总 一、填空题 1、单片机是将微处理器、一定容量的RAM和ROM以及I/O 口、定时器等电路集成在一块芯片上而构成的微型计算机。 2、单片机80C51片内集成了 4 KB的FLASH ROM,共有 5 个中断源。 3、两位十六进制数最多可以表示256 个存储单元。 4、在80C51中,只有当EA引脚接高电平时,CPU才访问片内的Flash ROM。 5、当CPU访问片外的存储器时,其低八位地址由P0 口提供,高八位地址由P2 口提供,8位数据由P0 口提供。 6、在I/O口中,P0 口在接LED时,必须提供上拉电阻,P3 口具有第二功能。 7、80C51具有64 KB的字节寻址能力。 特 第 持 ,其 。 IP。 边沿 计数 / 22 、串行通信有同步通信和异步通信两种通信方式。 23、在异步通信中,数据的帧格式定义一个字符由4部分组成,即:起始位、数据位、奇偶校验位和停止位。 24、串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是通信双方必须采用统一的编码方式,二是通信双方必须能产生相同的传送速率。 25、单片机80C51中的串行通信共有 4 种方式,其中方式0 是用作同步移位寄存器来扩展I/O口的。 26、设80C51的晶振频率为11.0592MHz,选用定时器T工作模式2作波特率发生器,波特率为2400b/s,且SMOD置0,则定时器的初值为F4H 27、键盘可分为独立连接式和矩阵式两类。键盘可分为编码式和非编 码式两类。 28、LED数码管有静态显示和动态显示两种方式。 29、在执行下列指令后,A=___60H___,R0=__45H____,(60H)=___45H___。

(完整word版)单片机知识点总结

第一部分硬件基础 1、单片机的组成; 2、单片机的并行I/O口在使用时,有哪些注意的地方? 3、单片机的存储器;程序存储器和数据存储器的寻址范围,地址总线和数据总线的位数;数据存储器内存空间的分配;特殊功能寄存器区; 4、时钟及机器周期; 5、单片机的控制总线、地址总线及数据总线等。 例: 一、填空 1.MCS-51单片机有4个存储空间,它们分别是:、、、。 2、MCS-51单片机的一个机器周期包括个状态周期,个振荡周期。设外接12MHz晶振,则一个机器周期为μs。 3.程序状态字PSW由位组成。 4.在MCS-51单片机内部,其RAM高端128个字节的地址空间称 为区,但其中仅有个字节有实际意义。 5. MCS-51 系列单片机为位单片机,其数据总线为位,地址总线为位,可扩展的地址范围为。 6. MCS-51 单片机的4 个并行I/O 口若作为普通I/O 口使用时,输入操作分为读引脚和读锁存器,需要先向端口写“1”的操作是。 7. MCS-51 单片机的特殊功能寄存器分为可位寻址和不可位寻址两种,那么IE 为,TMOD 为。 8.通常MCS-51单片机上电复位时PC= H、SP= H、通用寄存器采用第组,这一组寄存器的地址范围 是 H。 9.MCS-51单片机堆栈遵循的数据存储原则。 10.在MCS-51单片机中,使用P2、P0口传送信号,且使用P0口来传送信号,这里采用的 是技术。 11.MCS-51单片机位地址区的起始字节地址为。

12.对于并行口在读取端口引脚信号时,必须先对端口写。13.PC的内容是。 14、MCS-51 单片机运行出错后需要复位,复位的方法是在复位引脚上加一个持续时间超过个时钟周期的高电平。 15、具有4KBytes 储存容量之存储器,其至少需具有根地址线。 二、问答 1.简述MCS-51 单片机的P0、P1、P2 和P3 口的功能。 2.MCS-51单片机的三总线是由哪些口线构成的。 3.MCS-51单片机的位寻址区的字节地址范围是多少?位地址范围是多少? 4. MCS-51单片机存储器在结构上有什么特点?在物理上和逻辑上各有那几个地址空间? 5.简述MCS-51单片机00H-7FH片内RAM的功能划分,写出它们的名称以及所占用的地址空间,并说明它们的控制方法和应用特性。 6.请写出MCS-51单片机的五个中断源的入口地址。 第二部分 C51程序设计 1、C51的指令规则;C51编程语句及规则; 2、C51表达式和运算符; 3、顺序程序、分支程序及循环程序设计; 4、C51的函数; 5、中断函数。 例: 1.程序的基本结构有。 2.C51的存储器模式有、、。 3.C51中int型变量的长度为,其值域为;unsigned char型变量的长度为位,其值域为。 4.C51中关键字sfr的作用,sbit的作 用。 5.函数定义由和两部分组成。 6.C51的表达式由组成。C51表达式语句由表达式和组成。

C51单片机实验总结报告

HEFEI UNIVERSITY 单片机实验报告 系别电子信息与电气工程系专业 班级 学号 姓名 指导老师 完成时间

实验一构建单片机最小系统和实验环境熟悉 一、预习要求 1.构建单片机最小系统,熟悉51单片机的结构及编程方法 2.按照程序流程图编写出程序 二、实验目的 1.熟悉星单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的使用方法。 2.熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。 三、实验内容 单片机最小系统实验: 1、熟悉单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的安装和使用方法。 2、作出单片机最小系统的组成原理图,分析其各构成单元的工作原理。 存储单元数据传输实验 1、熟悉MCS51汇编指令。 2、进行存储单元数据传输实验,编写程序。 3、运行程序,验证译码的正确性。 四、实验原理 1、作出单片机最小系统的组成原理图

2.最小系统版的组成: 时钟电路,复位电路,电源电路。 3.软件编译环境的熟悉 实验中我们使用keilC环境编译程序。其窗口界面如下: 4.测试程序 ;将从外部RAM3000H单元开始连续存放的 ;50个单字节数据传送到内部RAM30H单元的50个单元中。 ORG 0000H MOV R0,#32H ;计数初值50 MOV A,#78H ;(A)=78H送外部3000H--3050H MOV DPTR,#3000H ;外部数据存储器首地址3000H送DPTR LOOP0: MOVX @DPTR,A ;送78H到外部数据存储区3000H INC DPTR ;外部数据存储区地址增一 DJNZ R0,LOOP0 ;循环次数减一不为零转LOOP0 SETB P1.2 CLR P1.3 CLR P1.4 ;74HC138输入为100,使CS2=0选中62256 MOV R0,#32H ;循环次数50送R0 MOV R1,#30H ;内部数据存储区首址30H送R1 MOV DPTR,#3000H ;外部数据存储区首址3000H送DPTR

51单片机实训报告

“51单片机”精简开发板的组装及调试实训报告

为期一周的单片机实习已经结束了。通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。 此次实训主要有以下几个方面: 一、实训目的 1.了解“51”精简开发板的工作原理及其结构。 2.了解复杂电子产品生产制造的全过程。 3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。4.能运用51单片机进行简单的单片机应用系统的硬件设计。 5.掌握单片机应用系统的硬件、软件调试方法 二、实验原理 流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。 它的电气性能指标:输入电压:DC4.5~6V,典型值为5V。可用干电池组供电,也可用直流稳压电源供电。 如图所示: 本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。 三、硬件组成 1、晶振电路部分 单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。 2、复位端、复位电路 给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各

(完整版)MCS-51单片机复习要点

MCS-51单片机 8051单片机是8位单片机,有40个管脚,8根数据线,16根地址线。 单片机的八大组成部分:CPU 、ROM 、RAM 、I/O 、定时/计数器、串口、SFR 、中断服务系统 一、MCS-51机的内存结构 (如图1所示) 0FFFH FFH 80H 7FH 0000H 00H 0000H 程序存储器 内部数据存储器 外部数据存储器 图1 MCS-51机的内存结构 物理上分为:4个空间, 片内ROM 、片外ROM 片内RAM 、片外RAM 逻辑上分为;3个空间, 程序内存(片内、外)统一编址 MOVC 数据存储器(片内) MOV 数据存储器(片外) MOVX 1、程序内存 寻址范围:0000H ~ FFFFH 容量64KB EA = 1,寻址从内部ROM ;EA = 0,寻址从外部ROM 地址长度:16位 存储器地址空间为64KB 作用: 存放程序及程序运行时所需的常数。 8051 单片机6个具有特殊含义的单元是:0000H —— 系统复位,PC 指向此处; 0003H —— 外部中断0入口 000BH —— T0溢出中断入口 0013H —— 外中断1入口 001BH ——T1溢出中断入口

0023H ——串口中断入口 2、内部数据存储器 物理上分为两大区:00H ~ 7FH即128B内RAM 和SFR区。如图2所示。 7FH 资料缓冲区 堆栈区80字节数据缓冲器用 工作单元 30H 2FH 位地址:16字节 00H~7FH 128 可位寻址位 20H 1FH 3区 2区 1区32字节4组R0~R7工作寄存器 0区 00H 图2 内部数据存储器 二、殊功能寄存器SFR 寻址空间离散分配在:80H ~ FFH , 注意PC不在此范围内。地址末尾为0或8的SFR具有位寻址功能 1、C PU是运算器加控制器 2、算术运算寄存器 (1)累加器A(E0H) (2)B寄存器:乘、除法运算用 (3)程序状态字PSW寄存器:包含程序运行状态信息。 PSW CY AC FO RS1 RS0 OV —P CY(PSW.7)——进位/借位标志;位累加器。 AC (PSW.6)——辅助进/借位标志;用于十进制调整。 F0 (PSW.5)——用户定义标志位;软件置位/清零。 OV (PSW.2)——溢出标志;硬件置位/清零。 P (PSW.0)——奇偶标志;A中1的个数为奇数P = 1;否则P = 0。 RS1、RS0 ——寄存器区选择控制位。 0 0 :0区R0 ~ R7 0 1 :1区R0 ~ R7 1 0 :2区R0 ~ R7 1 1 :3区R0 ~ R7

51单片机总结上拉电阻

51单片机总结——上拉电阻 单片机2009-07-28 14:56:05 阅读961 评论1字号:大中小 上拉电阻的作用: (1)用于为OC和OD门电路,提供驱动能力。 以OC(集电极开路)电路为例: 例如,达林顿管(其实就是复合三级管)集成块ULN2003. 内部一路的电路如图,就是一个集电极开路电路。 如果不加上拉电阻是无法高电平驱动其他器件的。因为当三极管截至市没有电流流通的路径,更谈不上驱动了。这个跟单片机P0口加上拉电阻的原理一样。 (2)提高高电平电位: 单片机P1口外接4×4矩阵键盘。另外复用P1.0~P1.3外接ULN2003控制驱动步进电机。 实验中遇到的问题:当接入ULN2003时键盘无法工作,去掉ULN2003后键盘工作正常。ULN2003工作正常。(注,两个部分不同时工作) 问题分析:由于键盘的结构,无非就是两个金属片的接通或断开。但是接入ULN2003 后无法正常工作,说明是接入ULN2003影响到了P1口电平的变化。用万用表测的电压,当单片机输出高电平时,P1.0~P1.3电压1V左右,P1.4~P1.7电压4.3V左右,于是测A T89s52高低电平的判决电位,在1.3V左右。这样P1.0~P1.3始终是低电平,键盘根本无法实现扫描功能。 解决方法,只要抬高P1口高电平时的电位,就可以正常工作, 1.在P1口到ULN2003上串接电阻,起到分压的作用,就可以抬高电平。 2.给P1口接上拉电阻,跟P1口内部电阻并联,减小上拉电阻阻值,减小分得的电压,从而抬高P0口高电平电位。 采用第二种方案可以抬高电平到2.5V左右。键盘工作正常。 另外:我在做液晶显示实验的时候,数据线用的P0口,无法正常工作,不显示字符。但是乱动一下数据线就可以完成显示,但是显示现象并不正常,字符不是一次写入,而是乱动几次才能写完全部内容,正常应该一次全部显示。原因是由于,我的P0口中有六个端口都外接并联三个发光二极管。,因为从资料上查到,P0口每一个端口最大可以吸收10MA 电流,总电流不能超过26MA电流。这样算我的总电流已经到了40MA,呵呵。见笑了。所以怀疑是驱动的问题。于是去掉了几个二极管。显示一切正常。似乎问题已经解决,但总觉得还是有点问题,于是又经过几次试验,发现只有当P0.7端口的并联二极管去掉一个,再在其他端口接上一个发光二极管。此时也可以正常显示。但是这样P0口吸收电流在38MA,也超过了26MA不少。所以不是吸收电流太大的问题。仔细分析当端口并联外接三个二极管的时候等效于加了一个700欧左右的电阻,于是把二极管去掉换成一个1k电阻,液晶也无法显示。

单片机基础知识点总结

单片机基础知识点总结 单片机基础知识点总结 第1章 1、微型计算机通常由哪些部分组成?各有哪些功能? 答:微型计算机通常由控制器、运算器、存储器、输入输出接口电路、输入设备和输出设备组成。控制器的功能是负责从内部存储器中取出指令 并对指令进行分析、判断、并根据指令发出控制信号,使计算机有条不紊 的协调工作;运算器主要完成算数运算和逻辑运算;存储器用于存储程序 和数据;输入输出接口电路完成CPU与外设之间相连;输入和输出设备用于和计算机进行信息交流的输入和输出。 2、单片微型计算机与一般微型计算机相比较有哪些区别?有哪些特点? 答:与通用微型计算机相比,单片机的硬件上,具有严格分工的存储器ROM和RAM和IO端口引脚具有复用功能;软件上,采用面向控制的 指令系统和硬件功能具有广泛的通用性,以及品种规格的系列化。单片机 还具备体积小、价格低、性能强大、速度快、用途广、灵活性强、可靠性 高等特点。 3、单片机的几个重要指标的定义。 答:单片机的重要指标包括位数(单片机能够一次处理的数据的宽度)、存储器(包括程序存储器、数据存储器)、IO口(与外界进行信息交换)、速度(每秒执行多少条指令)、工作电压(通常是5V)、功耗和温度。

4、单片微型计算机主要应用在哪些方面? 答:单片机的主要应用领域有智能化产品、智能化仪表、智能化测控系统、智能化接口等方面。 5、单片机的特点 存储器ROM和RAM严格分工;采用面向控制的指令系统;输入输 出端口引脚具有复用功能;品种规格的系列化;硬件功能具有广泛的通用 性 6、水塔水位的控制原理 (1)当水位上升达到上限时,B、C棒与A棒导电,从而与+5V电源连通。b、c两端均呈高电平状态,这时应使电机和水泵停止工作,不再给水 塔供水。(2)当水位降到下限以下时,B、C棒不与A棒导电,从而断开与 +5 V电源的连通。b、c两端均呈低电平状态。这时应启动电机,带动水泵工作给水塔供水。(3)当水位处于上下限之间时,B棒与A棒导电,而C棒不与A棒导电。b端呈高电平状态,c端呈低电平状态。这时无论是电机已在运转还是停止,都应维持电机和水泵的现有工作状态,直到水位上升到 水位上限或下降到水位下限。 第2章 1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:MCS-51单片机在一块芯片中集成了CPU、RAM、ROM、定时计数器、多功能IO口和中断控制等基本功能部件。1)单片机的核心部分是CPU,CPU是单片机的大脑和心脏。2)程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。3)

51单片机c语言总结.

入门有针对性的解决一些简单的实际问题,边理论边实践学一样会一样 基本实验:LED流水灯,数码管显示,键盘控制,音乐播放,继电器控制I2C通信实验,串口通信实验,红外线遥控信号解码实验等 单片机的定义分类和内部组成 1单片机就是中央处理器CPU,随机存储器RAM。只读存储器ROM。定时、计数器和各种输入输出接口I/o接口电路等部件集成在一块电路芯片上的微型计算机。 2,1分类按制造工艺分:HMOS和CHMOS CHMOS包括80c51等中间加了C功耗要小适合便携式手提式和野外作业。 2分类按不同容量的存储器配置分:51子系列和52子系列 51表示单片机最后一位数字为1作为标志。片内带有4KbROM或EPROM(Erasable Programmable ROM,可擦除可编程ROM,128BRAM,两个16位定时器/计数器和5个中段器52系列是增强型各项指标都高。 AT89S51是AT89C51的升级版支持ISP在线更新程序ISP(Internet Service Provider 内部集成看门狗计时器等。 3.1串行接口就是接口数据传送 3.2中断控制系统接收中断请求如定时时间到,需要鸣笛报警类似stop to do 停下来去执行ROM中特定的每段程序,执行完后再继续执行先前中断的程序 时钟电路控制节拍工作。 一个典型的单片机应用系统包括输入电路,单片机,输出电路 把他想象成电脑。 单片机的应用: p5 十六进制A10B11C12D13E14F15 记A10和D13点得13点F15不是F16 十六进制加H 逻辑数据的运算 逻辑与。。。两个输入一个输出中间加一个恒定5v电压 有0为0,全1出1 逻辑或有1为1,全0出0; 字长通常与计算机内部的寄存器和运算器数据总线的宽度一致 实例1功能感受protues仿真单片机播放《渴望》主题曲 运用protues打开仿真原理图。 对单片机进行处理编辑edit component,选取目标文件hex Clock frequency 时钟频率 Ok 原理图编辑窗口没有滚动条,可通过预览窗口该表原理图的可视范围。 Protues双击右键删除 先单击鼠标右键,可通过鼠标左键可以编辑元器件的属性 鼠标右键来删除画错的连线 中键缩放原理图 新建即保存新建设计文件

单片机课程知识点总结

单片机应用技术课程总结大作业 1.单片机C51语言 单片机C51语言与C语言的差别不大,应用的基本语法一致,算法可以套用,但C51语言多了一些C语言中没有的关键字如图1-1,其中大多数都与存储器相关,这也是在编程中特别需要注意的。 图1-1 C51扩展关键字 2.51单片机的内部硬件知识 51单片机在一块芯片上集成了CPU,RAM,ROM、定时器/计数器和多种1O功能部件,具有一台微型计算机的基本结构,主要包括下列部件:一个8位的CPU、一个布尔处理机、一个片内振荡器、128B的片内数据存储器、4KB的片内程序存储器(8031无)、外部数据存储器和程序存储器的寻址范围为64KB,21字节的专用寄存器、4个8位并行10接口、一个全双工的串行口、2个16位的定时器/计数器、5个中断源、2个中断优先级111条指令、片内采用单总线结构。图 2-1为51系列单片机的内部结构框图。

图2-1 51单片机的结构框图 在编程的时候不仅要根据单片机内部硬件资源配置,还要注意每一种硬件外设对应的引脚,这样在大项目中便于充分利用所有的引脚,节约资源;另外合理的分配引脚会尽可能多的拓展单片机的资源,在51单片机中大多采用40引脚的双列直插式的封装(DIP),引脚图如图 2-2所示,有图可以知道,P0~P3中,除标准输出输入引脚P1外,其他引脚都有第二功能,只需将相应外设配置好,就可以利用第二功能。 图2-2 51单片机外部引脚图和总线结构图 单片机有最小工作系统,包括电源电路,复位电路,时钟电路等,只有这些单元与单片机按照要求结合在一起,单片机才能正常工作。51单片机的最小工作系统如图2-3所示:

单片机功能总结

MCS51的中断系统有5个中断源(8052有6个),2个优先级,可实现二级中断嵌套 ET0:定时/计数器T0中断允许位; EX1:外部中断1允许位; ET1:定时/计数器T1中断允许位; Ⅰ,GATE——门控制。 GATE=1时,由外部中断引脚INT0、INT1和控制寄存器的TR0,TR1来启动定时器。 GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。 Ⅱ,C/T——功能选择位 置位时选择计数功能,清零时选择定时功能。 Ⅲ,M0、M1——方式选择功能 由于有2位,因此有4种工作方式 ================================================================ M1M0 工作方式计数器模式 TMOD(设置定时器模式) 0 0 方式0 13位计数器 TMOD=0x00 0 1 方式1 16位计数器 TMOD=0x01 1 0 方式 2 自动重装8位计数器 TMOD=0x02 1 1 方式3 T0分为2个8位计数器,T1为波特率发生器 TMOD=0x03 ================================================================ TCON:定时器/计数器控制寄存器

可以通过设置此寄存器里面的相关位,让定时器开启或关闭(TR0、TR1,1:开启,0:关闭),可以在主程序中,通过查询其中的相关位(TF1、TF0,1:溢出,0:没有溢出)。,知道定时有没有溢出 TMOD;定时器/计数器工作方式控制寄存器,通过对这个寄存器不同的位进行设置,可以设置:让T0/T1是定时还是计数方式,是13位计数,16位计数,还是8位自计数,定时的启动是通过定时开关自身启动,还是通过外部中断进行启动。 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IE0:外部中断0中断请求标志位 IT1:外部中断1触发方式控制位 IE1:外部中断1中断请求标志位 TF0:定时/计数器T0溢出中断请求标志位 TF1:定时/计数器T1溢出中断请求标志位 外部中断 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit k3=P3^2; //定义按键K3 sbit k4=P3^3; //定义按键K4 sbit led=P2^0; //定义P20口是led void delay(u16 i)//延时函数,i=1时,大约延时10us { while(i--); } void Int0Init()//设置外部中断1 INT0 { IT0=1;//1跳变沿出发方式(下降沿)0为电平触发//IT1=1; EX0=1;//打开INT0的中断允许。// EX1=1;//打开INT1的中断允许。 EA=1;//打开总中断 } void main() { Int0Init(); // 设置外部中断0 while(1);

51单片机实习报告

(电子工艺实习) 实习报告 院(部):轨道交通学院 实习地点:工程训练中心D309 班级:自动化141 学生姓名:巩龙波学号140816112 指导教师:张吉卫 时间:2015 年11 月9 日到2015 年11 月13 日 山东交通学院

目录 1. 555电路控制二极管闪烁 (1) 1.1 焊接注意事项 (1) 1.2 设计内容与步骤 (1) 1.2.1 设计电路 (1) 1.2.2 画实物电路图 (1) 1.2.3 焊接成果显示 (2) 1.3 设计材料与成果要求 (2) 1.3.1 设计材料 (2) 1.3.2 实验成果 (2) 2. 555单稳态触发器 (3) 2.1 555定时器工作原理 (3) 2.2 555单稳态触发器 (3) 2.3 画实物电路图 (3) 2.4 实验成果 (3) 3. 万用表的组装与应用 (3) 3.1 实验仪器 (3) 3.2 实验原理 (4) 3.3 试验部件与检测方法 (4) 3.4 安装调试与故障检测 (4) 3.4.1安装 (5) 3.4.2调试与故障检测 (5) 3.5 焊装成果显示 (5) 4 实践收获与体会 (6) 5 实验总结 (6)

实习任务

1.555电路控制二极管闪烁 1.1焊接注意事项 ①掌握好加热时间 在保证焊料润湿焊件的前提下时间越短越好。 ②保持合适的温度 保持烙铁头在合适的温度范围。一般经验是烙铁头温度比焊料熔化温度高50℃较为适宜。 ③用烙铁对焊点加力加热是错误的。 会造成被焊件的损伤,例如电位器、开关、接插件的焊接点往往都是固定在塑料构件上,加力的结果容易造成元件失效。 1.2设计内容与步骤 1.2.1设计电路 1.2.2画实物电路图

单片机考试知识点总结

一、填空题: 1、当使用8051单片机时,需要扩展外部程序存储器,此时EA应接低电平。 2、8051上电复位后,从地址0000H开始执行程序,外部中断1的中断入口地址为0013H. 3、8051最多有64KB的程序存储器和64KB的数据存储器。 4、P0口通常用作分时复用为地址总线(低8位)及数据总线或外接上拉电阻用作普通I/O 口。 5、P2口的功能为用作地址总线和作为普通I/O口使用。 6、若由程序设定RS1、RS0=01,则工作寄存器R0的直接地址为08H。 7、若由程序设定RS1、RS0=00,则工作寄存器R0的直接地址为00H。 8、若累加器A中的数据为01110010B,则PSW中的P=0(偶数个1为0,奇数为1) 9、8051单片机共有5个中断源,分别是INT0外部中断0、INT1外部中断1、T0定时器/计数器中断0中断、T1定时器计数器1中断、串行口中断。 10、ADC0809是8通路8位逐次逼近式模/数转换器。 11、计算机中按功能把总线分为数据总线、地址总线和控制总线。 12、MOV A,#0F5H中,#0F5H的寻址方式称之为立即寻址。MOV类指令称之为一般传输指令。 13、8051的一个机器周期等于12个晶体震荡周期;通常8051单片机的ALE引脚以1/6倍的晶振频率输出脉冲。 14、8051单片机复位后,堆栈指针SP指向第07H号内部RAM;8051的堆栈是向上生长的。 15、十进制调整指令DA A,专用于BCD码的加减运算。 16、单片机的中断触发方式有低电平触发和下降沿触发两种。大多数情况下,单片机控制系统采用下降沿触发方式触发中断。 17、若执行加法运算后累加器(A)中的数据为01110010B,则PSW中的P=0 18、8051单片机的程序存储器和数据存储器编址方式采用的是哈佛结构,即数据存储器和程序存储器分开的编址方式。 二、单项选择题 1、8051单片机执行MOVX写指令时,相关的信号状态是 PSEN无效为高电平,WR有效为低电平 2、若PSW.4=1,PSW.3=1,现在需要保存R1的内容,可执行PUSH 19H指令 3、下列指令不是变址寻址方式的是MOVX A,@DPTR 4、在8051片外扩展一片EEPROM 28C64需要13根地址线(片选除外),8根数据线。 5、8051定时器/计数器工作方式2是自动重装8位计数器 6、单片机程序存储器的寻址范围是由程序计数器PC的位数决定的,MCS-51的PC为15位,因此其寻址范围是64KB。(2^16B=64KB) 7、若单片机的振荡频率为12MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为2^16-1000.(计算过程:机器周期=12/12MHz=1μs 次数=1ms/1μs=1000次方式一为16位=2^16) 8、访问外部数据存储器的指令是MOVX,访问程序存储器的指令是MOVC。 9、汇编语言中,最多包含4个区段,其中操作码区段是必不可少的。 10、MCS-51单片机的位寻址区域为20H-2FH。 11、MCS-51单片机复位后,PC值被初始化为0000H。 12、MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应外部中断0. 三、读程序 1、执行下列程序段中第一条指令后

51单片机心得体会

51单片机心得体会 51单片机心得体会(一) 首先总体上谈一谈看法: 1、我从不说51是基础如果我这么说也请把这句话理解为微机原理是基础 2、对51单片机的操作本质上就是对寄存器的操作对其他单片机也是如此 库只是一个接口方便使用者使用而已 3、汇编语言在工作中很少用到了解就好 4、51的P0口很特别 5、C语言就是C语言51单片机就是51单片机算法就是算法外围电路就是外围电路传感器就是传感器通信器件就是通信器件电路图就是电路图PCB图就是PCB图仿真就是仿真 当你以后再也不使用51了C语言的知识还在算法的知识还在搭建单片机的最小系统的技能还在传感器和通信器件的使用方法还在还会画电路图和PCB图当然也会仿真 6、51单片机是这个: 而不是这个: 7、当程序调试不如人意的时候静下心来好好查资料51单片机最大的好处就是网上资料非常多你遇到的问题别人肯定也遇到过作为学习者问人可能更方便点但一直这样是培养不出解决问题的能力的

接下来上点干货: 首先要放清51的定位跟我一起再念一遍:51只是个工具51只是个工具51只是个工具 当然51还有一个地位就是大学生单片机启蒙教程 换句话说:单片机只是个工具单片机只是个工具单片机只是个工具 然后什么是基础:模电数电微机原理然后熟练翻阅数据手册可以试着做一些模块或者最小系统练练手C语言其实也可以算工具吧就单片机来说作为必要条件也算作基础吧 再然后是要尽早搞明白自己的专业方向或者自己准备发展的方向然后不同方向又有不同的专业基础你学测控就需要各种传感器、控制原理、理论、算法//买测量模块用不叫测控啊喂;你学信号处理就需要信号与系统、数字信号处理基础然后慢慢接触DSP、FPGA//信号处理真的不是result=(AD+0.5)/4096*3.3啊喂;你想做嵌入式开发就慢慢研究ARM的架构跑一些实时系统甚至高端ARM跑Linux开发驱动或应用;你要是想做通信每天晚上拜一拜香农好了这茬貌似挺苦的什么通信原理编码论电磁场blablabla…… 总之51/单片机可以实现很多事情但这不是一定说51重要而是你如何利用51 哦对了当你使用更高级的芯片的时候很多底层的东西慢慢可以忽略了甚至很多芯片厂商都会提供库给你你可以安心的专注于自己的算法而不是如何去控制单片机

单片机原理及应用期末考试必考知识点重点总结

单片机概述: 单片机是微单片微型计算机的简称,微型计算机的一种。 它把中央处理器(CPU),随机存储器(RAM ),只读存储器(ROM ),定时器计数器以及1\0 接口,串并通信等接口电路的功能集成与一块电路芯片的微型计算机。 字长:在计算机中有一组二进制编码表示一个信息,这组编码称为计算机的字,组成字的位 数称为字长”字长标志着精度,MCS-51是8位的微型计算机。 89c51是8位(字长)单片机(51系列为8位) 单片机硬件系统仍然依照体系结构:包括CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、输入设备和输出设备、内部总线等。 由于一块尺寸有限的电路芯片实现多种功能,所以制作上要求单片机的高性能,结构简单, 工作可靠稳定。 单片机软件系统包括监控程序,中断、控制、初始化等用户程序。 —般编程语言有汇编语言和C语言,都是通过编译以后得到机器语言(二进制代码) 1.1单片机的半导体工艺 一种是HMOS工艺,高密度短沟道MOS工艺具有高速度、高密度的特点; 另一种是CHMOS工艺,互补金属氧化物的HMOS工艺,它兼有HMOS工艺的特点还具有 CMOS的低功耗的特点。例如:8051的功耗是630mW,80C51的功耗只有110mW左右。 1.2开发步5骤: 1.设计单片机系统的电路 2.利用软件开发工具(如:Keil c51 )编辑程序,通过编译得到.hex的机器语言。 3.利用单片机仿真系统(例如:P rotus)对单片机最小系统以及设计的外围电路,进行模拟的硬软件联合调试。 4.借助单片机开发工具软件(如:STC_ISP 下载软件)读写设备将仿真中调试好的.hex程序 拷到单片机的程序存储器里面。 5.根据设计实物搭建单片机系统。 2.1MCS-51单片机的组成:(有两个定时器) CPU(进行运算、控制卜RAM(数据存储器)、ROM(程序存储器)、I/O 口(串口、并口)、内部总线和中断系统等。 工作过程框图如下: 组成:8位算术逻辑运算单元ALU 8位寄存器B、程序状态字寄存器TMP2 等。 (Arithmetic Logic Un it )、8 位累加器A ( Accumulator )、PSW( Program Status Word )、8 位暂存

单片机C51基础知识汇总

单片机C51基础知识汇总 李小鹏 2019.12.24

目录 1、标识符 2、数据类型 3、变量 4、常量 5、二进制、八进制、十进制、十六进制 6、运算符 7、语句 8、注释 9、if语句 10、switch--case语句 11、for循环 12、while循环 13、do—while循环 14、循环控制 15、一维数组 16、二维数组 17、字符数组与字符串数组 18、函数 19、函数重入与递归 20、预处理 21、宏

22、条件编译指令 23、指针(*) 24、结构(struct) 25、联合(union) 26、枚举(enum) 主要内容 1 .标识符 标识符就是编程时使用的表示某个事情名称的符号,如函数名、变量名、引脚名、特殊功能寄存器名等。标识符有系统标识符和用户自定义标识符之分。 标识符的命名规则: (1) 标识符第一个字符必须是字母或下划线。 (2) 标识符只能由字母、数字和下划线三类字符组成。 (3) 标识符是区分大小写的。如A 和a 是两个不同的标识符。 (4) 标识符有效长度不超过32 个字符。 (5) 标识符不能是C51 的关键字。 2 .数据类型 char有符号字符型,一字节,值域-128~127。 int 有符号整型,两字节,值域-32768~32767。

long有符号长整型,四字节,值域-2147483648~2147483647 unsigned char无符号字符型,一字节,值域0~255 unsigned int无符号整型,两字节,值域0~65535 unsigned long无符号长整型,四字节,值域0~4294967295 float浮点型(都是有符号的),四字节,±1.175494E-38~±3.402823E+38 bit位变量,一个二进制位,值域0~1。 sbit51 单片机特殊功能寄存器位,值域0~1。 Sfr 51 单片机特殊功能寄存器,值域0~255。 sfr1651 单片机特殊功能寄存器,如DPTR,值域0~65535。bit,sbit,sfr,sfr16不是标准C 的内容,是51 单片机及C51 编译器特有的,不能用指针对它们进行操作。 3 .变量 C51 规定所有变量在使用前都必须加以说明。变量说明语句由数据类型、可选的存储类型和其后的一个或多个变量名组成,形式如下: 数据类型[存放类型] 变量表; 变量的作用范围:在花括号内说明(也称声明或定义)的变量,其作用范围仅限该花括号内,称为局部变量;在所有函数外面定义的变量,其作用范是整个程序,称为全局变量。 静态变量:在类型前加关键词static 说明的变量,称静态变量。在函数内部定义的静态变量也是局部变量,但它在函数下次调用时,能保存上次调用的值。在函数外面定义的静态变量,是全局变量,但

20天89C51单片机总结

20天89C51单片机总结 看了怎么久的单片机做个总结。其实就芯片来说单片机没想象的那么复杂! 89C51 就40 个引脚。其中P0~P3 口占了32 个。一个接地一个接电源,两个振荡引脚。一个EA 引脚ROM 的起始地址选择端。一个ALE/Vpp 片外地址锁存 器充许引脚/线编程电源输入端。PSEN 片外ROM 充许使能端。当然还有个复 位REST 引脚。其中P3 口全部都有第2 功能复用:定时中断串行口中断。当P0~P3 端口写#FFH 时片内锁存器置1 这是单口为双向输入输出口。这是从芯片外围看。 从芯片的内部看的话主要的就两个独立的存储器ROM,RAM 一个为程序指示,一个为数据处理和存放。编程时通过寻址方式区别ROM,RAM。他们都为 64KB 的容量。ROM 的片内为4KB 存储空间。由EA 指示是从片外执行程序还 是从片内执行。RAM 片内为256 字节即FFH 分4 个部分。00H~1FH 为工作寄存器组。20H~2FH 为为寻址空间。30H~7FH 为用户RAM 区。80H~FFH 为特 殊寄存器区。有22 个SFR(这里就不在介绍了)。 说说指令系统吧。MOV ,MOVX,MOVC3 个传送指令其中片外存储器是 不能直接传送的。3 个调用指令AJMP,LJMP,SJMP.分别用于不同的调用范围。逻辑算术指令ANL ,ORL ,XRL.还有加ADD,减SUBB,乘MUL,除DIV。还 有很多的指令如交换,跳转,循环,位寻址,布尔处理指令等。 例如下面的循环-跳转指令 MOV R0,#00HMOV R1,#AAHMOV R7#0BHloop: MOV A ,@R0 MOV @R1,A INC R0 INC R1 DJNZ R7,loop END 这个程序就是执行片内传送功能的。 说说程序的一般流程吧。分为顺序,分支,循环,还有组合嵌套。上面的例

相关主题
文本预览
相关文档 最新文档