单片机学习归纳和总结(二):C51复习纲要及核心模块知识点总结

51MCU复习纲要

十速的51系列,78B芯片(CPU+RAM+Flash(ROM)+IO+Timer/Counter+Interrupt+AD+PWM+Touch+LED/LCD):

1、时钟的构成:外部时钟,内部时钟;快时钟与慢时钟,时钟的分配。

2、78B单片机的系统时钟是2个周期(执行一条指令的时间),标准的51是12周期的。

3、·RAM(数据空间):非常有限,数据空间的访问方式(寻址方式):位寻址;直接寻址;间接寻址;立即数寻址

·数据格式(位,字节,多字节;有符号,无符号;整型,实数,浮点;),多字节的存储方式(小尾和大尾)数据的表示范围(整型的范围)。

4、代码空间(flash/ROM):用代码空间存储常量,代码空间的划分(中断向量区,调试区,用户代码区,代码区仿真可擦写的数据区)。

5、IO:IO模式(上拉输入,悬浮输入,推挽输出,开漏输出,特殊功能模式),逻辑1对应的高电位(输出高Voh,输入高Vih,两者关系),逻辑0对应的低电位(输出低VoL,输入低ViL,两者关系),单个IO和整个芯片输出与输入电流的上限。

/*

输出高大于等于输入高

*/

6、Timer/Counter:输入的基准时钟,分频,时钟加法器(长度),溢出后自动加载,时钟的溢出标志位和中断号(中断向量),时钟中断子程序(编程)。

7、中断:中断的控制位,中断标志位,中断号,中断子程序,中断子程序与主程序的协作关系(volatile)。

8、AD:AD的字长(12位的),转换时间,通道数量,内置校准电压通道,外部硬件滤波,内部数字滤波。

9、PWM:脉冲宽度调制技术,调光,调速,声音的生成。

10、Touch:电容触摸的基本原理,触摸基值的获取,复杂环境的触摸基值的获取(电源波动,电磁干扰,环境温度,工作环境等),触摸的手势(按下,抬起,单击,双击,多点,滑动)。

11、LED/LCD

12、C51编程:统一编程风格(工程名、文件名、宏、变量、子函数命名规则、功能模块与文件划分等),变量的作用域、可见域、生命周期(全局变量、局部变量),变量修饰符(const、code、static、volatile),简单类型数据结构(u8,u16,u32,bit),子函数的作用域、可见域、生命周期(堆栈的有限性),中断子函数(现场保护、堆栈使用、返回),中断子程序与主程序的协作关系(volatile)。

工具链KeilC51、VSCode、git(github、bitbucket)。

C51外部模块——AD模块

1、其他形式的物理量转换成电量(包括:电压和电流),并送到计算机体系中进行加工,数据处理。

2、用电阻网络测电压(用折半搜索的方式猜测电压值进行AD转换)

3、AD转换的精度:5V / 4096(mv / bit)

4、AD转换的时间;采样速度;信息恢复(奈奎斯特采样定理)

5、采样速度:信息变化周期速度的2倍,同时肯定低于AD转换的时间

6、多路AD转换(一个转换模块,时分多路复用)

7、用12位二进制表示转换出来的AD值:2^12=4096,

8、AD转换的标定,基于内部参考电压。

9、1MHz刚好为1微妙

10、SYSCLK:系统时钟——>ADC Clock:开关转换的时钟

11、UBG:1.2V的内部基准电压源(降压稳压)

12、如果外部输入电压为5V,则(1.2 / 5)4096 = 983;

如果外部输入电压为4V,则(1.2 / 4)4096 = 1228

因此:外部电压越低,值越大,单片机进行保护模式,可提醒用户,电池没电了,该换电池了。

13、I/O端口、时钟、AD转换==》5278B-cn.pdf

14、ADSOC:AD开始转换

15、AD采样数据一定有波动,所以要做滤波(硬件滤波和软件滤波)

16、NTC电阻特性:负温度电阻;PTC电阻特性:正温度电阻

17、AD干扰源分析(在电脑进行分析)

采用合适的滤波方案(软件滤波成本较低)

18、简单的数字滤波:

1)平均滤波,移动窗口滤波

Yn = (X1 + X2 + … + Xn) / n

其中:Xi 为滤波器输入;

Yn为滤波器输出。

2)指数移动滤波

Yn = c1Yn-1 + c2Xn

其中:

Xn: 第n次采样

Yn-1:第n-1次滤波器输出;

Yn:第n次滤波器输出;

c1 >= 0; c2 >= 0

c1 + c2 = 1

3)高效实现指数移动滤波器

·c1 = 0.9, c2 = 0.1;

·c1 = 9, c2 = 1, 再除以10

·c1 = 7, c2 = 1, 再除以8

eg: 50Hz的滤波用200Hz的采样频率进行采样

C51外部模块——中断

1、定时/计数器主要受方式寄存器TMOD和控制寄存器TCON的控制。

2、定时/计数器的核心是一个加1计数器,脉冲来源有两个:一个是由系统的时钟晶振器输出脉冲经12分频后送来;另一个是由T0或T1引脚输入的外部脉冲源提供。

3、每来一个脉冲则加1计数器加1,当加到加1计数器为全1时,再来一个脉冲就使加1计数器回到零;且加1计数器的溢出使得TCON寄存器中的TF0(或TF1)置1,向CPU发出中断请求。如果定时/计数器工作于定时模式,则表示定时时间已到;如果定时/计数器工作于计数模式,则表示计数值已满。

4、定时器的定时时间不仅与计数器的初值有关,而且还与系统的时钟频率有关,需要根据时钟频率来确定定时器的初值。

5、定时/计数器有两个控制寄存器,即TMOD和TCON。TMOD用于控制定时/控制器的工作方式,选择定时或计数功能;TCON则用于控制定时/计数器的启动和停止,并控制定时/计数器的工作状态。

6、启动定时/计数器开始工作之前,需要定义定时/计数器的工作方式,同时对TL0、TH0及TL1、TH1进行初始化编程。

7、定时/计数器的初始化需完成以下工作:

对TMOD赋值,以确定T0和T1和工作方式

计算初值,并将其写入TH0、TL0或TH1、TL1。

使用中断方式时,则对IE赋值,开放中断。

使TR0或TR1置位,启动定时/计数器的定时或计数。

补充

C5178B的代码空间:8K Bytes Flash

C5178B的数据空间:512Bytes SRAM

时钟 双时钟系统 时钟分频(把高频降为低频) 时钟倍频

external:表示外部快速时钟

快时钟

· 外 FXT(快速晶振)

· 内 FRC(快速内部)约为7.3728MHz,大约为8MHz。

慢时钟

·外 SXT(慢速晶振)大约为32.768kHz

·内 SRC(慢速内部)大约为24kHz

SYSCLK:系统时钟

刚上电时,单片机按“内部慢时钟”进行

WDT(看门口定时器):(看门狗定时器复位)

·“+1程序”

·“清零程序”

复位:

·程序从某个位置开始运行

·指令的初始位置

看门狗定时器复位:在空间/停止模式下可选运行或停止

“内部快时钟两分成”在C语言中如何完成

“.h文件”:封装配置常量

存储器(8K)内部 ·IRAM ·SFR 时钟—>操作模式

sfr CLKCON = 0xd8;

sbit:位操作 SCKTYPE = CLKCON^7

低电压复位

指令周期 = 系统时钟SYSCLK / 2(因为:78B单片机的系统时钟是2个周期)

对于高级工程师的编程要求:

(1)程序正确,能跑起来

(2)程序与硬件能成为一个产品

(3)模块化、松耦合、可复用

(4)代码工作量估算

(5)代码风格很重要

1、Alt+N,Ctrl+P:用于快速定位

2、RCP2H、RCP2L:重载寄存器

3、ET2:定时器2的中断使能

4、IE:中断使能寄存器

5、TF2 = 0:中断标志位清零(TR2可以删除)

6、程序中“tim1”:表示时间;“timer”:表示定时器

7、单片机中只有ARM和特殊功能寄存器的部分单元有位地址,因此位寻址只能对有位地址的这两个空间进行寻址操作

附录

(0)

相关推荐