外部中断
1.定义
外部中断就是在单片机的一个引脚上,由于外部因素导致了一个电平的变化(比如由高变低),而通过捕获
这个变化,单片机内部自主运行的程序就会被暂时打断,转而去执行相应的中断处理程序,执行完后又回
到原来中断的地方继续执行原来的程序。
2.用法
CPU总是先响应优先级别最高的中断请求
CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序
每一个中断源可以用软件独立地控制为开中断或关中断
部分中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断
3.什么引脚能作为外部中断口? 引脚带INTx标识的
4.分别能支持什么类型的中断?
INT0中断(上升沿和下降沿),可同时支持上升沿和下降沿
INT0中断 (下降沿)
INT1中断(上升沿和下降沿),可同时支持上升沿和下降沿
INT1中断(下降沿)
INT2中断(下降沿),只支持下降沿中断
INT3中断(下降沿),只支持下降沿中断
一、I/O中断的定义
Ai8051U系列支持所有的Io中断,且支持4种中断模式:下降沿中断、上升沿中断、低电平中断、高电平中断。
每组IO口都有独立的中断入口地址,且每个IO可独立设置中断模式。
特别的,如果需要同时检测某个信号的上升沿和下降沿,可将此信号同时连接到两个IO,其中一个1O检测此信号的上升沿、另外一个IO检测此信号的下降沿即可。
相比于外部中断,IO中断有以下优点:
1.支持所有的IO口(外部中断只有特定的外部中断的引脚)
2.可以任意配置上升沿/下降沿/高电平/低电平(外部中断只有上升/下降沿中断)
缺点:
I/O中断同时只能支持一种中断模式,外部中断0和1可以同时支持上升/下降沿中断(可以用两个IO端口实现双边沿检测I)
二、PxIPH,PxIP:Px口中断优先级控制位
00:Px口中断优先级为0级(最低级)
01:Px口中断优先级为1级(较低级)
10:Px口中断优先级为2级(较高级)
11: Px口中断优先级为3级(最高级)
三、中断优先级的设置
相同优先级,靠前的中断源先执行,执行完之后在执行低中断源,且一个中断源在执行的时候不能被打断。
定时器0和P3中断都是最低优先级,定时器0中断号1,P3中断号40,执行完定时器0,在执行P3,在执行定定时器0,在执行。
定时器做计数器
1.计数器的作用:高低电平输出的脉冲传感器
只要输出信号是高低电平变化的传感器,想要计算个数的就可以用计数器的功能。
2.定时器作为计数器的用法
定时器0有两个隐藏的寄存器RL_TH0和RL_TL0。RL_TH0与TH0共有同一个地址,RL_TL0与TL0共有同一个地址。当TR0=0即定时器/计数器0被禁止工作时,对TL0写入的内容会同时写入RL_TL0,对TH0写入的内容也会同时写入RL_TH0。当TR0=1即定时器/计数器0被允许工作时,对TL0写入内容,实际上不是写入当前寄存器TL0中,而是写入隐藏的寄存器RL_TL0中,对TH0写入内容,实际上也不是写入当前寄存器TH0中,而是写入隐藏的寄存器RL_TH0,这样可以巧妙地实现16位重装载定时器。当读TH0和TL0的内容时,所读的内容就是TH0和TL0的内容,而不是RL_TH0和RL_TL0的内容。
定时器1测量INT1引脚低电平脉冲宽度
任务:编写INT1测量低电平时间
DS18B20简介
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗十扰'能力强,精度高的特点。.DS18B20数字温度传感器接线万便,封装成石可应用丁多科功合,观管道式,螺纹式,磁铁吸附式,不锈钢封装式,型亏多种多样。王罗根掂义用切百的个口以变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温..弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,
封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
①、独特的单线接口方式,DS18B20在与微处理器连接时仪需要一条口线即可实现微处理器与DS18B20的双向通讯。
②、测温范围-55℃~+125℃,固有测温误差1°℃。
③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
④、工作电源: 3.0~5.5V/DC(可以数据线寄生电源)
⑤、在使用中不需要任何外围元件
⑥、测量结果以9~12位数字量方式串行传送
功能描述
温度测量
18B20的核心功能是直接温度-数字测量。其温度转换可由用户自定义为9、10、11、12位精度分别为0.5℃.0.25℃.0.125'℃.0.0625℃分辨率。值得注意的是,上电默认为12位转换精度。18B20上电后工作在低功耗闲置状态下。主设备必须向18B20发送温度转换命令才能开始温度转换。温度转换后,温度转换的值将会保存在暂存存储器的温度寄存器中,并且 18B20将会恢复到闲置状态。如果18B20是由外部供电,当发送完温度转换命令后,主设备可以执行“读数据时序”
(请参阅“1-wire总线系统”章节),若此时温度转换正在进行18B20 将会响应"0",若温度转换完成则会响应“1”。如果18B20是由“寄生电源”"供电,该响应的技术将不能使用,因为在整个温度转换期间,总线必须强制拉高。该总线的‘寄生电源”供电方式将会在“ 18B20的供电”章节中详细讲解。
18B20的温度输出数据时在摄氏度下校准的;若是在华氏度下应用的话,可以用查表法或者常规的数据换算↓温度数据以一个16位标志扩展二进制补码数的形式存储在温度寄存器中(图2符号标志位(S)温度的正负极性:正数则S=O,负数则S=1。如果18B20被定义为12位的转换精度,温度寄存器中的所有位都将包含有效数据。若为11位转换精度,则 bit 0为未定义的。若为10位转换精度,则 bit 1和 bit 0为未定义的。若为9位转换精度,则 bit 2、bit 1和 bit 0为未定义的。表1为在12位转换精度下温度输出数据与相对应温度之间的关系表。
代码编写
1-wire总线系统
1-wire总线系统即一个总线主设备控制一个或多个从设备。18B20始终是一个从设备。当总线上只有一个从设备时,此系统被称为“单节点"”系统;当总线上有多个从设备连接时,此系统被称之为“多节点”系统。
l-wire总线上所有的命令或者数据的发送都是遵循低位先发送的原则。接下来关于1-wire总线系统的描述将会分成三个部分:硬件配置,事件序列和 1-wire总线信号(信号定义和时序)。
1)复位和存在
复位(输出O保持480us,输出1保持6Ous,读取当前电平,延时420us)
2) 写0,写1
写0(输出0保持60us+,输出1保持1us+)
写1(输出O保持1us+,输出1保持60us+)
3) 读0,读1
读0/1(输出0保持1us+,输出1保持1us+,读取当前电平,延时60us)
串口简单应用
1. 串口通信的基础知识
每次发送一位数据的称为串行通信,多位一起传输的称为并行通信。
2. 同步/异步?
异步:
①异步串口通信不需要统一的时钟信号,每个数据字节的传输都是独立的。所以需要发送和接收设备的时钟比较接近
②每个数据字节通常会被起始位和停止位包围,起始位用于通知接收端数据传输的开始,停止位用于标志数据字节的结束。
③由于没有统一的时钟信号,异步串口的传输速率相对较低,且需要额外的起始位和停止位,因此效率较低。
同步:
①同步串口通信依赖于一个统一的时钟信号来同步发送端和接收端的数据传输。
②发送端和接收端共享同一个时钟信号,或者通过某种方式(如曼彻斯特编码)在数据流中嵌入时钟信息。
③由于有时钟信号的同步,数据传输的速率可以较高,且不需要起始位和停止位来界定每个数据字节,因此效率较高。
串口通信的奇偶校验
偶校验(eveh parity):让传输的数据〈包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0",奇数相反。
奇校验(odd parity) : 让传输的数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1";奇数相反。
为什么需要加校验呢?
传输过程是单向的,可能存在出错的可能!
奇偶校验的优缺点?
优点1:可以减少数据出错的可能
优点2:使用简单便捷
缺点1:奇偶校验的检错率只有50%、因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则无能为力了
缺点2:奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大
串口通信的奇偶校验
程序如何实现?使用9位数据位(8位数据+1位校验)
方案1:可以利用二进制数相加的特点:
0+0=0、·1+0=1、1+1=0
可以看出,如果我们将一个字节的所有位相加
有奇数个“1”的字节的和为1
有偶数个“1”的字节的和为0
方案2:可以利用ACC(累加器)和P(奇偶校验位)
将需要运算的数值存入ACC寄存器
打印读取P位用来表示结果中“1”的个数是奇数还是偶数。结果等于1为奇数!
ACC = dat;
if(P)//奇数个1
else//偶数个1
ADC
数转换器(ADC)是什么?
模数转换器即A/D转换器,或简称ADC (Analog-to-digital converter),通常是指一个将模拟信号转变为数字信号的电子元件。
模拟信号->电压
数字信号->电压的具体数值
Ai8051U单片机ADC使用原理
任务1:编写ADC读取函数,并在数码管显示当前ADC数值
任务2:编写ADC按键读取函数,并在数码管上显示当前按键号
ADC测温
1.ADC的用途分析
虽然ADC只能测量电压,但是通过配合外部的传感器,就可以实现多种的信号检测!如:测光线、测声音、测气体、测温度、测电流。
2.ADC采集NTC换算内温度
NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热敏电阻。其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化。现在还出现了以碳化硅、硒化锡、氮化钽等为代表的非氧化物系NTC热敏电阻材料。
3.使用ADC15测量内部1.19V信号源,反推电源电压
要想做一个电压表,就必须要有电压基准,如果直接用锂电池供电,电压基准会变化。如果加额外的电源芯片会浪费成本,故而可以用内部1.19V直接反推出电源电压!
Flash模拟EEPROM
一、flash和eeprom区别
二、flash和eeprom是什么?
Flash存储器:
1.最大64K字节FLASH程序存储器(ROM),用于存储用户代码
2.支持用户可配置部分FLASH作为DATA FLASH/EEPROM使用,512字节单页擦除,典型单个扇区擦除次数可达10万次,用户保守可当2万次使用
关于IAP技术,做过 bootloader .的想必很熟悉(IAP全称.In Application ProgrammIng-即Y用拥任,企ISP(全称In System Programming,即系统编在)个P, ISP一双郁正他上 hA力哭h觖分为两个式老名机内部的Flash 存储器进程编程(如JTAG等),而IAP技术是从结构上将Flash 储存器映射分为两个或者多个分区,在一个分区中对其他分区进行编程;这个分区通常称为bootloader。
IAP/EEPROM:
Ai8051U系列单片机内部集成了大容量的 EEPROM。利用ISP/IAP技术可将内部 Data Flash当EEPROM,擦写次数在10万次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。
注意:EEPROM 的写操作只能将字节中的1写为0,当需要将字节中的0写为1,则必须执行扇区擦除操作。EEPROM 的读/写操作是以1字节为单位进行,而 EEPROM擦除操作是以1扇区(512字节)为单位进行,在执行擦除操作时,如果目标扇区中有需要保留的数据,则必须预先将这些数据读取到RAM中暂存,待擦除完成后再将保存的数据和需要更新的数据一起再写回EEPROM/DATA-FLASH。所以在使用 EEPROM 时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的(每扇区512字节)。
注意事项:
1.擦除必须整个扇区
2.只能往1写0,不能往0写1
3.数据必须按扇区写入
4.在电源稳定时操作
5.避免频繁读写
三、关于EEPROM操作时是否需要关闭中断的问题
如果只有主循环的代码中或者只有中断代码中才使用IAP方式对 EEPROM进行操作,则EEPROM操作时不需要关闭中断。
四、EEPROM操作时间
IAP_TPS=系统工作频率/1000000(小数部分四舍五入进行取整)
页:
1
[2]