ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:22.85KB ,
资源ID:28357221      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28357221.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机读书笔记.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51单片机读书笔记.docx

1、51单片机读书笔记51单片机读书笔记【篇一:51单片机读书笔记】 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算、逻 辑运算、数据传送、中断处理)的微处理器(cpu),随机存取数据存储器(ram),只读程序 存储器(rom),输入输出电路(i/o口),可能还包括定时/计数器,串行通信口(sci),显示驱 动电路(lcd 或led 驱动电路),脉宽调制电路(pwm),模拟多路转换器及a/d转换器等电 路集成到一个单块芯片上,构成一个最小然而完善的计算机系统。 软件特征是指指令系统特性和开 发支持环境,指令特性即单片机的寻址方式、数据处理方式、逻辑处理方式、输入输出特 性

2、及对电源的要求等等 现在常规的单片机普遍都是将中央处理器(cpu)、随机存取数据存储(ram)、只读程序 存储器(rom)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一个单一的 芯片上,增强型的单片机集成了如a/d 转换器、pmw(脉宽调制电路)、wdt(看门狗),有 些单片机将lcd(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更 多,功能就越强大 单片机按内部数据通道的宽度,可分为4位、8 位、16 位及32位单片机。 单片机的特点可归纳为以下几个方面: 1) 集成度高 2) 存储容量大 3) 外部扩展能力强 4) 控制功能强 5) 低电压、低功耗 6) 低电

3、压、低功耗 7) 可靠性高 mcs51 系列单片机还有颇具特色的21 个特殊功能寄存器sfr 利用sfr 可完成对定时 器、串行口、中断逻辑的控制,这就使得单片机可以把定时/计数器、串行口、中断逻辑等 集成在一个芯片上。 。mcs51 单片机组成结构中包含 运算器、控制器、片内存储器、并行i/o 口、串行i/o 口、定时/计数器、中断系统、振荡 器等功能部件 sp 是堆栈指针寄存器,pc 是程序计数器,psw 是程序状态字寄存器, dptr是数据指针寄存器。(5) 程序状态字寄存器(标志寄存器)。程序状态字寄存器(psw)是一个8 位的特殊寄存 器,它保存alu 运算结果的特征和处理状态,以供

4、程序查询和判别。psw 中各位状态信 息通常是指令执行过程中自动形成的,但也可以由用户根据需要加以改变。psw 中各位的 定义如下:时,(cy)=1;当加法或减法运算时,最高位无进位或借位,(cy)=0。cy 位主要用在多字 节的加减法运算中。 ac(psw.6):辅助进位标志。无符号数运算中,当加法或减法运算时,低4位向高 4 位有进位或借位,(ac)=1;当加法或减法运算时,低4 位向高4位无进位或借位,(ac)=0。 ac 位常作为计算机进行bcd 码修正的判断依据。 f0(psw.5):用户标志位。无特别意义,供用户自行定义。通过软件置位或清零, 并根据(f0)=1 或0 来反映系统某

5、一种工作状态,决定程序的执行方式。 rs1、rs0(psw.4、psw.3):工作寄存器组选择位。可用软件置位或清零,用于选 定当前使用的4 个工作寄存器组中的某一组。 将在存储器结构部分中介绍。 ov(psw.2):溢出标志。主要用在有符号数运算时,运算结果超出了范围时,(ov)=1; 否则,(ov)=0。如为8 位运算,若结果超过了8 位补码所能表示的范围128127,则 (ov)=1。 计算机在数据处理过程中,ov 置位和清位的依据是:即(ov)=(c)?(c7.6)。 p(psw.0):奇偶标志位。在执行指令后,单片机根据累加器a 的8 位二进制数中 “1”的个数的奇偶,自动给该标志置

6、位或清零。若累加器a的8位二进制数中“1”的个 数为奇数,则(p)=1;若累加器a 中“1”的个数为偶数,则(p)=0。该标志对串行通信的数 据传输非常有用,通过奇偶校验可检验传输的可靠性 控制器是单片机的神经中枢,是由指令寄存器ir、指令译码器id、程序计数器pc、 堆栈指针sp、数据指针dptr、定时及控制逻辑电路等组成。它先以主振频率为基准发出 cpu的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作, 用来协调单片机内部各功能部件之间的数据传送、数据运算等操作 控制器 1) 程序计数器pc(16 位的计数器)。用于存放cpu 下一条要执行的指令地址,是一个 16

7、位的专用寄存器,可寻址范围是0000hffffh,共64 kb。 (2) 指令寄存器(ir)。指令寄存器用于存放指令代码 (3) 指令译码器id。指令译码器用于分析指令功能,根据操作码产生相应操作的控制 信号。 (4) 数据指针(dptr)。数据指针dptr是一个16位的专用寄存器,其高位字节寄存器 用dph 表示,低位字节寄存器用dpl 表示。 (5) 定时与控制逻辑。定时与控制逻辑由时序部件和微操作控制部件构成 (6) 时序部件。时序部件由时钟系统和脉冲分配器构成 (7) 微操作控制部件。计算机在执行一条指令时,总是把一条指令分成若干基本操作, 称为微操作。微操作控制部件根据指令产生计算机

8、各部件所需要的控制信号。这些控制信 号是由指令译码器的输出信号、脉冲分配器产生的节拍脉冲以及外部的状态信号等进行组 合产生【篇二:51单片机学习笔记】 51单片机 手册 51单片机 手册 .1 开发板 .1 程序下载 .1 程序开发 .1 开发环境 .1 i2c .2 i2c通信 读写数据过程 .2 spi 总线 .4 概括 .4 c语言应用 .4 中断 .4 data, idata, xdata, pdata, code .5 c语言中的static 详细分析 .6 开发板 程序下载 stc90xx的下载注意点:1. 3.3v和5v短路帽需要接到5v 2.j0挑到auto 3. txd,rx

9、d都在usb端 4. 用usb转串口线连接pc和板子 5. usb转串口的驱动装上. 6. 用pzisp.exe,芯片型号要选对。 程序开发 开发环境 需要转上keil3 工程文件后缀为uv2 一开始要新建一个project,会自动跳出选择相应芯片的窗口,选择对应的就ok, 主要是为了生成头文件 i2c i2c通信 读写数据过程 在通信之初,主从机必须根据自己的要求约定好通信规则:command的定义和位置、address的位数和位置。 以读写从机寄存器数据为例: 假设从机寄存器地址为8位、从机寄存器也位8位(被读取数据为8位); 约定读command为0x01,写command位0x02;

10、约定主机发起通信后,第一个slave address字节收到ack后,紧跟的一个字节为command,再下面一个字节为address。 1. 读寄存器数据步骤: 1.1 主机先发起一次通信,将读command(0x01)和需要读取的寄存器地址address写入从机;(主机发出写操作) 1.2 从机firmware的处理: 1.2.1 将command和address分别提取出来; 1.2.2 判断command的含义(本例中,是读指令还是写指令); 1.2.3 根据收到的的address,将对应寄存器的的数据放入从机i2c输出buffer;(这个步骤可以使用指针) 1.3 主机再次发起一次通信

11、,读取从机的数据;(主机发出读操作) 2. 写操作步骤: 2.1 主机发起通信,按约定依次写入command、要写入的从机寄存器地址address和要写入的数据data; 2.2 从机firmware要做的处理: 2.2.1 分别提取command、address和data; 2.2.2 根据command做出判断(本例中则判断是写入还是读取); 2.2.3 将data写入与接收到的address对应的寄存器。(这个步骤可以使用指针)。 spi 总线 概括 通常有一个主设备和一个或多个从设备,需要至少4根线 (1)sdo 主设备数据输出,从设备数据输入; (2)sdi 主设备数据输入,从设备数

12、据输出; (3)sclk 时钟信号,由主设备产生; (4)cs 从设备使能信号,由主设备控制。 据输出通过 sdo线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取 spi接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据 spi的片选可以扩充选择16个外设,这时pcs输出=npcs,说npcs03接4-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为npcs03,输出用于16个外设的选择。 c语言应用 中断 timer0_int() interrupt 1 using 2 unsigned char temp1 ;unsigned char tem

13、p2 ; executable c statements ; interrupt声明 表示 向量生成在 (8*n3),这里,n就是interrupt参数后的那个数字 这里,在08h的代码区域 生成 ljmp timer0_int 这样一条指令 中断源的矢量位置 中断源keil中断编号 矢量地址 最高优先级 60x0033 外部中断0 00x0003 定时器0溢出 10x000b 外部中断1 20x0013 定时器1溢出 30x001b 串口 40x0023 定时器2溢出 50x002b dma70x003b 硬件断点 80x0043 jtag90x004b 软件断点 10 0x0053 监视定

14、时器 12 0x0063 data, idata, xdata, pdata, code 从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写c51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ansi-c稍有不同,它只分samll、compact、large模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。 在51系列中dat

15、a,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128个ram,可以用acc直接读写的,速度最快,生成的代码也最小。 idata:固定指前面0x00-0xff的256个ram,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似c中的指针方式访问的。汇编中的语句为:mox acc,rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata:外部扩展ram,一般指外部0x0000-0xffff空间,用dptr访问。 pdata:外部扩展ram的低256个字节,地址出现在a0-a7的上时读写,用movx acc,r

16、x读写。这个比较特殊,而且c51好象有对此bug,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。【篇三:51单片机c语言学习笔记】 一、 定时器/计数器 1. 定时器/计数器结构 2. 寄存器tcon: 定时器/计数启动和停止 2.1 tcon的高4位控制定时器/计数器的启动和中断申请,低4位与外部中断有关。2.1.1 tf1/tf0:定时器/计数器t1和t0的益处标志位,定时器/计数器有溢出时,会将tf1或tf0位置“1”,表示定时器/计数器有中断请求。 2.1.2 tr1或tr0:定时器/计数器t1和t0的启动/停止位。tr1或tr0设置为“1” 定时器/计数器t1和t0的启动

17、,若设置为“0”,相应的定时器/计数器就停止工作。 3. 寄存器tmod:设置定时器/计数工作方式(用于计数或定时)。 3.1 tmod:定时器/计数器工作方式3.2 tmod寄存器中高4位控制t1,低4位控制t0。他们对定时器/计数器工作t0、t1的控制功能是一样。(下面以低4位控制定时器/计数器t0为例,说明各位的具体控制功能) 3.2.1 gate:门控位,控制定时器/计数器的启动模式。 gate=0时,只要用软件使tcon中的tr0置“1”,就可以启动定时器/计数器工作。gate=1时,将tr0置“1”外,还需要外部中断引脚int0也为高电平,才能启动定时器/计数器工作。 3.2.2

18、c/t:定时器/计数器模式选择位c/t=0时,定时器/计数器被设置为定时器工作方式,c/t=1时,定时器/计数器被设置为计数器工作方式。 3.2.3 m0、m1:定时器/计数器工作方式设置位。备注:t0、t1工作于定时或者计数时都不占cpu工作时间。 4. 定时器/计数器的初始值计算 5. 定时器/计数器应用举例 5.1 用定时器t0查询方式控制p2口8位led灯闪烁 使用定时器t0的查询方式tf0来控制p2口8位led闪烁,t0工作于方式1,led灯闪烁周期100ms,即亮50 ms,熄灭50 ms 0。 5.1.1 定时器t0工作方式的设置 用指令对t0的工作方式进行设置:tmod=0x0

19、1;/即tmod=0000 0001b,低4位gate=0,c/t=0,m1m0=01 上述设置中,低4位c/t=0,使t0工作于计时方式。gate=0,使tr0=1时即可启动t0开始工作。m1m0=01,使t0工作于方式1。 5.1.2 定时器初值的设定 单片机晶振为11.0592mhz,所以经12分频后送到t0的脉冲频率是f=11.0592/12mhz,周期t=1/f=12/11.0592=1.085 us。即每个脉冲计时1.085 us,要计时50 ms(即50000 us),需要计的脉冲数为50000/1.085=46038(次)。则定时器的初始应设置为65536-46083=1945

20、3。 这个数需要t0的高8位寄存器(th0)和低8位寄存器(tl0)来分别存储,这两个寄存器初始值的设置方法如下: th0=(65536-46083)/256;/定时器t0的高8位赋初值 tl0=(65536-46083)256;/定时器t0的低8位赋初值 5.1.3 定时器t0开始工作后,可通过编程让单片机不断查询益出标志位tf0是否为1,若为1,则表示计时时间到,否则等待。 5.1.4 程序设计 实例42:用定时器t0查询方式p2口8位控制led闪烁 #includereg51.h / 包含51单片机寄存器定义的头文件 /* 函数功能:主函数 */ void main(void) / ea

21、=1; /开总中断 /et0=1; /定时器t0中断允许 tmod=0x01; /tmod=0000 0001b,使用定时器t0的模式1 th0=(65536-46083)/256; /定时器t0的高8位赋初值 tl0=(65536-46083)%256; /定时器t0的低8位赋初值 tr0=1;/启动定时器t0 tf0=0;/定时器t0溢出标志位用软件清零 p2=0xff; /先定义p2口为高电平,led灯不亮 while(1) /无限循环等待查询 while(tf0=0) /查询标志位是否溢出 ; /空指令 tf0=0; /若计时时间到tf0=1,需用软件将其清0 p2=p2;/将p2按位

22、取反,实现led灯闪烁 th0=(65536-46083)/256; /定时器t0的高8位重新赋初值 tl0=(65536-46083)%256; /定时器t0的低8位重新赋初值 5.2 用定时器t1查询方式控制单片机发出1khz音频 5.2.1 定时器t1工作方式的设置用指令对t1的工作方式进行设置:tmod=0x10;/即tmod=0001 0000b,高4位gate=0,c/t=0,m1m0=01 上述设置中,高4位c/t=0,使t1工作于计时方式。gate=0,使tr1=1时即可启动t1开始工作。m1m0=01,使t1工作于方式1。 5.2.2 定时器t1初值的设定 要发出1khz音频

23、,让单片机送给蜂鸣器(接p3.7引脚)的电平信号,每隔音频的半个周期取反一次即可。音频的周期为1/1000=0.001s,即1000us,则要计数的脉冲数为1000/1.0852=921(次),定时器t1的初值设置如下: th1=(65536-921)/256;/定时器t0的高8位赋初值 tl1=(65536-921)256;/定时器t0的低8位赋初值 5.2.3 程序设计 实例43:用定时器t1查询方式控制单片机发出1khz音频 #includereg51.h / 包含51单片机寄存器定义的头文件 sbit sound=p37;/将sound位定义为p3.7引脚 /* 函数功能:主函数 */

24、 void main(void) / ea=1;/开总中断 /et0=1;/定时器t0中断允许 tmod=0x10; / tmod=0001 0000b,使用定时器t1的模式1 th1=(65536-921)/256;/定时器t1的高8位赋初值 tl1=(65536-921)%256;/定时器t1的低8位赋初值 tr1=1; /启动定时器t1 tf1=0; /定时器t1溢出标志位用软件清零 while(1)/无限循环等待查询 while(tf1=0) /查询标志位是否溢出 ;/空指令 tf1=0; /若计时时间到tf0=1,需用软件将其清0 sound=sound; /将p3.7引脚输出电平取

25、反 th1=(65536-921)/256;/定时器t0的高8位重新赋初值 tl1=(65536-921)%256;/定时器t0的低8位重新赋初值 二、中断 1. 中断优先响应级别: 2. void time0(void) interrupt 1 using0 注解: interrupt 1为外部int0中断 using0为使用0组工作寄存器(不声明,默认为0组) 3. 中断号要与定时器(中断源)相对应, 才能正确响应中断。 4. 中断启用:只有总开关ea和分支开关均闭合,相应中断才被使用。 5. 外部int1/int0、定时器/计数器、串口等中断开关说明: 1) ea:中断允许总控制位,ea=0时,禁止所有中断,ea=1时,开启总中断。 2) es: 串口允许中断控制位,es=0时,禁止串口中断,es=1时,允许串口 中断。 3) et1:定时器/计数器t1的溢出中断允许位,et1=0时,禁止t1中断, et1=1时,允许t1中断。 4) ex1:外部中断1中断允许位,ex1=0时,禁止int1中断,ex1=1时,允 许int1中断。 5) et0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1