ly1350
发表于 2024-1-29 16:04:34
第11节终于进入自己曾经接触过的C语音。C51对ANSI C扩展了sbit、sfr、sfr16数据类型。
bit不能定义指正、数组。位用“^”符号。
sfr、sfr16特殊功能寄存器的定义已经在stc8h.h头文件中,编程时包含进程序中即可运用。
可以用code将常数定义到程序存储区来节省内部ram。
内部ram用data、idata和bdata定义。
外部ram用xdata、pdata定义。
keil的c51指针
ly1350
发表于 2024-1-29 20:18:14
第12节,讲解了C程序设计实例。第一个例子,输出周期1s的方波,点亮LED。分析了强制指定存储类型的好处。
EEPROM基本操作。详细讲解IAP EEPROM操作。
这个单片机能够通过IAP EEPROM对数据进行掉电保存。以前的STC 89C52等如果要保存数据,必须通过I2c总线读写外部存储芯片(at24c02等)来实现的。这相当于把存储芯片整合进单片机里了。这大大简化了外围电路,使用也更加方便!
ly1350
发表于 2024-1-29 21:11:24
第13节:讲解中断。中断的概念:暂停正在执行的程序,去处理中断的事项,完了返回原来执行的程序继续执行。
请求中断的来源称为中断源;
cpu暂停当前程序,去处理中断请求,称为中断响应;
处理中断事项的过程称为中断服务(对应中断处理函数);
处理完中断事项,回去继续执行原来进行的程序,称为中断返回;
中断服务函数由硬件触发,不能调用;无返回值;无参数;
中断优先级/嵌套;
中断提高了效率和灵活性:1、匹配慢速外设。2、及时处理控制系统的随机事项;3、处理故障,提高系统可靠性。
中断与子程序调用的区别:1、中断是随机产生的,子程序是预设的。2、中断既保护断点,又保护现场(返回后要继续执行),子程序只保护断点。3、中断为外设和各种事件处理服务,子程序只为调用它的程序服务(与外设无关)。
中断的开关通过设置相关的特殊功能寄存器实现。
中断的保护现场和恢复用堆栈实现。
堆栈的操作是后进先出。
中断撤出:对应的操作是清除中断标志,由硬件自动清除或手动编程清除。
stc8h8k64u的中断:有44个中断源。5个外部中断,5个定时器中断,4个串口中断,1个串行外设中断,1个I2C中断等等,可见比传统8051的中断多了很多。
stc8h8k64u中断控制寄存器讲解。
ly1350
发表于 2024-1-29 21:34:26
本帖最后由 ly1350 于 2024-1-29 21:39 编辑
红圈的位置的“为主程序服务”建议改为”为调用它的程序”服务,用于区别C中的main函数。因为主程序(main函数)可以调用子函数,子函数也可以调用另外一个子程序,
ly1350
发表于 2024-1-29 23:55:22
第14节,继续讲解中断。
中断标志位:硬件或软件清零,等待下次中断;
IE:中断允许控制寄存器。与8051的IE不同的是多了ELVD(第7位)和EADC(第6位),因为8051
无DAC和低压检测。其它位基本相同。
中断优先级:stc8h8k64u的中断优先级有4级,而8051只有2级。
中断处理过程:1、响应中断的条件:有中断请求、请求的中断被允许(控制寄存器相关位为1)、总中断(EA=1)允许,3个条件要同时满足。
2、中断处理过程:根据相应的中断优先级,执行完当前指令后处理:保存当前程序状态,压堆栈;处理中断;返回,出栈。
3、中断优先级处理原则:不同优先级同时申请,先高后低;处理低优先级时有高优先级请求,暂停低优先级去处理高优先级的请求,完成后继续执行原来暂停的中断;处理高优先级时有低优先级请求,忽略低级的请求,完成当前的中断后,处理低价的请求;同级同时申请时,根据中断查询号确定先后。
讨论了可能会丢中断的情形。
不执行中断的情况:1、中断控制位设置为0
2、正在处理同级或高级的中断
3、当前指令还未完成(等待当前指令的最后一个机器周期)
中断服务程序: 程序从入口地址开始执行
中断服务的4个部分:保护现场、中断服务、恢复现场、中断返回
注意事项:1、中断服务程序要尽量短、高效
2、中断响应后不会关闭中断系统,如果处理中断过程不允许被打断,要在中
断服务程序中关闭中断
3、保护和恢复现场前,要先关闭中断。
中断撤出:硬件自动清除或手工清除中断标志位。
中断运用例子讲解。
ly1350
发表于 2024-1-30 01:30:54
第15节讲解计时器/计数器。定时器、计数器的运用非常广泛。
STC8H8K64U内部集成了5个16的定时器/计数器(T0-T4)。作用:定时控制、用作分频器和计数、用作输出时钟、用作串口波特率发生器。
定时器/计数器的结构:核心就是加1计数器,对内部或外部输入的脉冲计数。
STC8H8K64U的5个16的定时器/计数器中的每一个定时器/计数器由两个8位的特殊功能寄存器THn和TLn组成。
作为计时器使用时,可以选择是否对脉冲源进行12分频。不分频的计时速度快,精度比分频的高。
T0、T1工作模式设定:T0、T1通过TMOD设定。(T0有4种模式,T1无模式3)
T2的工作模式由AUXR设定,只有16位自动重装1种工作模式。
TCON控制T0、T1
AUXR用来设置T0、T1是否12分频;T2的功能
INTCLKO控制时钟输出。
T4T3M设置定时器T3、T4。
TM2PS、TM3PS、TM4PS为T2、T3、T4的时钟预分频器
ly1350
发表于 2024-1-30 09:20:46
第16节讲解定时器的应用。定时器的量程:定时器的最大定时能力。根据系统工作频率和是否进行12分屏可以计算出最大计时能力。
通过装入不同的计数起始值,得到不同定时。
定时量程的扩展:可以通过硬件和软件扩展量程。STC8H8K64U可以通过5个定时器串联扩展。
常用软件扩展:对定时中断计数,用中断次数X每次中断的计时值就能得到相应的定时时间。
定时器运用的要点:1、正确初始化 。2、编写中断函数。
定时器初始化步骤:1、设置工作方式(设置TMOD)
2、装初值(设置TLn,THn)
3、启动定时器(设置TRn)
4、允许定时器中断(设置ETn)
5、开cpu总中断(设置EA)
运用举例
ly1350
发表于 2024-1-30 11:26:28
第17节,讲解串行通讯。STC8H8K64U集成了4个UART、1个ISP、1个I2C和1个usb共7个通讯端口。
两种通信方式:并行和串行。串行通信发送数据一般是从低位开始发送。并行速度快,传输距离短;串行速度慢,距离远。rs232单线传输,传输15米以内,rs485双线传输,可达1千米。
串行通信分类:按同步分为同步和异步。
异步通信的格式,数据从低位开始传输。异步通信传输要点:1、 约定字符格式。2、通信 速率(波特率)。通信速度越快,距离越短。(电磁干扰,传输不稳定)。寄偶校验。
同步通信:通信效率高,线路复杂。
按传输方向分:单工、半双工、全双工。
串行接口:通过串行-并行转换实现(UART)计算机内部并行数据与外界串行传输。可以用软件和硬件实现,目前用硬件实现。
硬件UART的结构:数据总线、控制总线和中断构成。
UART同步过程:通过外部时钟同步。
ly1350
发表于 2024-1-30 13:30:29
第18节,继续讲解串口通信。STC8H8K64U有4个UART。每个串口由一个发送缓冲器、一个接收缓冲器、一个位移寄存器、一个控制寄存器和一个波特率发生器构成。
发送和缓冲器物理独立,但是公用同一地址(SBUF)。发送缓冲器只能写,接受缓冲器只能读。
串口1有四种工作方式(SCON设置);串口2、3、4只有2种工作方式(S2CON设置)。通过设置相应的特殊功能寄存器,可以对引脚进行切换,方便布线和分时复用。
介绍了与串口相关的寄存器。SCON不能位操作。
多机通信:1、中、从机均设置为模式2或者3,SM=1,开中断。
2、主机TB8=1,发送通信目标地址(从机地址)。
3、所有从机接收主机发送的通信地址,进行比较。
4、被寻址的从机确认地址,本机的SM2=0,可向主机发送本机地址供确认。
5、核对后,主机向从机发命令,进行数据交换
6、通信只能在主机与从机间进行,从机与从机通信要经过主机中转
7、通信结束,主、从机将SM=0.
实际运用中,用RS485标准
串口2控制寄存器S2CON。串口3控制寄存器S3CON。串口4控制寄存器S4CON。
掉电控制寄存器PCON
辅助寄存器AUXR
从机地址控制寄存器SADEN、SADDR
数据缓冲器SBUF
STC8H8K64U的串口工作模式
ly1350
发表于 2024-1-30 16:32:08
第19节讲串口通信运用。
1、串口1的波特率设定。常用模式1和3,波特率可变。定时器作为波特率发生器时,要禁止其产生中断。
2、串口2-4的波特率设定。
3、STC-ISP提供的波特率计算工具的使用。
UART接口运用举例
编程时,可以用查询和中断两种方式通信,建议用中断方式,提高实时性
串口1 的编程要点:1、设置工作模式(SCON)2、设置波特率 3、设置中断优先级(PS)
4、发送数据时,将数据写入SBUF;接收数据,将数据从SBUF读出
5、编写中断服务程序,清除中断标准(T1,R1)
串口2编程要点:要先设置与串口相关的IO口设置(准双向口),其余与串口1相似。设置S2CON、PS2、S2BUF。
运用举例:1、两个单片机之间通信。
2、多机通信