单片机学习归纳和总结(二):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和特殊功能寄存器的部分单元有位地址,因此位寻址只能对有位地址的这两个空间进行寻址操作。