第四课 单片机的内部结构,STC补充外围电路设计讲解
微机框架结构控制器(控制总线)和运算器(数据总线和地址总线) PSW程序状态4寄存器
堆栈:子程序调用之后可以返回的地址存在堆栈中,自动保存子程序返回的地址 中断恢复现场
STC8H相比传统的单片机有:复位控制(看门狗低电压检测) 硬件乘法计算器进行乘除 时钟控制内部时钟 p0~7口
单片机的中央处理器(CPU)由运算器和控制器组成。
1)运算器
以8位算术/逻辑运算部件ALU为核心,加上通过内部总线而挂在其周围的暂存器TMP1、TMP2、累加器ACC、寄存器B、程序状态标志寄存器PSW以及布尔处理机组成了整个运算器的逻辑电路。运算器中包含程序状态寄存器PSW。
程序状态寄存器
PSW 位地址
字节地址DOH
2)控制器
控制器是CPU的大脑中枢,包括定时控制逻辑、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP、RAM地址寄存器、16位地址缓冲器等。
存储器空间及存储器
STC8H8K64U单片机的程序存储器和数据存储器是各自独立编址的,片内集成有3个物理上相互独立的存储器空间:程序Flash存储器(没有用作程序存储器的Flash存储器可以作为EEPROM使用)、内部数据存储器和扩展数据存储器特殊功能寄存器和内部数据存储器的80H~FFH单元地址重叠。
数据存储器
第五课存储器以及单片机的引脚
从这节开始程序加实操 记录自己学习的心得和重点总结
对上一节课的存储器进行补充讲解
XDATA存储数据类型 扩展RAM区或者XRAMunsigned charxdata unsigned charxdata i=0; 使用软件keil调试x: 看memory (但不执行看赋值)。
单片机引脚
每个引脚上也会复用有不同的功能需要配置分为第一功能 第二功能
做最小系统电源连接注意点:
1、ADC的外部参考电源管脚ADC VRef+,定不能浮空,必须接外部参考电源或者直接连到Vcc2、若不需要进行USB下载,芯片复位时P3.0/P3.1/P3.2不可同时为低电平3、建议在Vcc和Gnd之间就近加上电源去耦电容22uF和0.1uF,可去除电源线噪声,提高抗干扰能力。
最小系统需要的配置 电源晶振仿真复位电路 (STC8H单片机好多内部已经用RC振荡器代替晶振复位电路内部已经集成)
逻辑符号有附图
p0123和p4567作为输入输出IO口非常相似 ,P1.2取消可能后面可能还会出现(哈哈体验用户决定产品)
引脚讲解 电源外接晶体引脚控制和复位脚 ( ALE外部扩展 NRST复位)输入输出IO
单片机输入输出口
作用:io口 和复用
IO口的工作模式
准双向 推挽高阻(仅输入)开漏 每个口都是由PM0 PM1控制
使用前必须配置IO口 P3.0 P3.1除外 3.0 3.1准双向 其他高阻态
第六课 IO口工作模式汇编程序设计初步入门
接上一节IO口复用功能
比如 P0口可以复用为 地址总线低8位 数据总线ADC输入 串口 PWM控制等。
P1口地址总线的高8位 P2P3P4可以读写控制信号(控制总线)P5 6 7
复用功能引脚切换寄存器以及各位的定义
IO口配置上拉模式 在ISP勾选
驱动负载可以用单片机控制三极管大功率可以ULN2803A达林顿管驱动 更大的电流用场效应管
读取IO口外部状态的时候加延时1T模式下时钟频率太快可能捕捉不到电平
汇编程序设计 (如果只用C程序设计直接跳过 其实本人认为可以跳过 或者做简单的了解)
下面做点简单的学习心得和记录毕竟咱也是学过一点的。
伪指令
建立汇编程序.ASM
第七课 汇编程序进阶 宏汇编
稍微做记录,单位用的是C语言编程,汇编稍微做了解和学习
助记符语言 操作码操作数
指令格式以及分类
寻址方式
第八课汇编指令一(数据传送/逻辑运算/算术运算)
继续简单记录汇编语言的指令和心得,以便以后翻回来看当个笔记
数据传送类指令简介(数据传送 数据交换 栈操作)
逻辑操作类指令 按操作数的个数(单操作数双操作数) 与 或 求反 左右 移位
算数运算类指令 (加减类乘除类增量减量指令 二——十进制调节指令)
第九集 汇编指令二(位操作/控制转移)
位操作指令 位数据传送指令 位状态控制指令 (位求反和位清零指令)位逻辑操作指令 位条件转移指令(判进位标志C指令,判断直接寻址位移指令)
控制转移类指令 程序转移指令(无条件转移指令条件转移指令【累加器判断转移指令 比较转移指令 循环转移指令 中断返回指令空操作指令】) 子程序调用和返回指令
第十课 汇编语言程序设计的一般步骤和基本框架
1.一般步骤和基本框架
(1)汇编语言程序设计的一般步骤
(2)汇编语言程序的框架
程序流程图
2.典型程序语言程序设计举例
(1)分支程序设计
(2)查表程序设计
(3)循环程序设计
(4)定点运算子程序设计
(5)数据排序程序设计
(6)代码转换程序设计
第十一课 单片机C语言程序设计导入
一、 C51对ANSIC的扩展
二、 单片机C语言程序中的常用运算
三、 STC8H8K64U单片机C51程序框架
C51扩展的关键字
C51有以下19个扩展关键字:_at、sbit、sfr、bit、sfr16、idata、bdata、xdata、pdata、data、code、alien、small、compact、 large、usingreentrant、interrupt、_task_。
C语言程序中的常用运算
关系运算符 > >= < <= ==!=
逻辑运算符 逻辑运算符包括与(&&)、或()、非(!)三种,用于对包含关系运算符的表达式进行合并或取非。对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。
位运算符 C语言提供了六种位运算符,分别为按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)和右移(>>)。按位运算的数据长度与参与运算的变量类型有关。
程序架构
// stc8h.h为单片机寄存器定义头文件,具体内容参见附录
#include “'stc8h.h”
void delay(long delaytime); //声明子函数,子函数可以有返回值
void main(void)
{
//此处可存放应用系统的初始化代码
while(1)//主程序循环
{
//根据需要填入适当的内容
delay(100)://可以调用用户白定义的子函数
}
}
//各个子函数的声明--------
void delay(long delaytime)
{
while (delaytime>0)
delaytime--;://子函数的实现代码
}
//--------各个中断函数的实现-------
void INTO ISR(void)interrupt INTO VECTOR //外部中断0服务子函数
{//根据需要填入程序代码}
void INT1_ISR(void) interrupt INT1_VECTOR /外部中断1服务子函数
{//根据需要填入程序代码}
void INT2 ISR(void) interrupt INT2 VECTOR//外部中断2服务子函数}
{//根据需要填入程序代码}
void INT3 ISR(void) interrupt INT3 _VECTOR//外部中断3服务子函数
{//根据需要填入程序代码}
void INT4 ISR(void) interrupt INT4 VECTOR//外部中断4服务子函数
{//根据需要填入程序代码}
void To ISR(void) interrupt T0 VECTOR/定时器0中断服务子函数
{//根据需要填入程序代码}
void T1 ISR(void)interrupt T1 _VECTOR/定时器1中断服务子函数
{//根据需要填入程序代码}
void T2 ISR(void) interrupt T2 VECTOR/定时器2中断服务子函数
{//根据需要填入程序代码}
void T3 _ISR(void) interrupt T3 _VECTOR//定时器3中断服务子函数
{//根据需要填入程序代码}
void T4_ISR(void) interrupt T4 VECTOR//定时器4中断服务子函数
{//根据需要填入程序代码}
void UART1 ISR(void) interrupt UART1 VECTOR //串囗1中断服务子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
void UART2SR (void) interrupt UART2 VECTOR //串口2中断子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
void UART3 ISR (void) interrupt UART3 VECTOR //串口3中断子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
void UART4 ISR (void)interrupt UART4 VECTOR //串口4中断子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
void SPl lSR (void) interrupt SPI VECTOR //SPI中断子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
void l2c IsR (void)interrupt I2C VECTOR //12C中断子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
void UsB ISR (void) interrupt USB VECTOR //USB中断子函数
{//根据需要填入程序代码,注意中断请求标志的清0}
{:dabing:}
{:4_188:}