找回密码
 立即注册
查看: 43275|回复: 85

《STC教学研讨会STC8H/STC32G》--学习记录/学习心得--打卡帖 | 建议送

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-5 10:02:20 | 显示全部楼层 |阅读模式
陈教授《STC最新8051单片机原理及应用--STC8H8K64U》(7月19日) -- 学习笔记

原功能--指令集--汇编语言;

《深入理解计算机系统》、《数字设计和计算机体系结构》;

前置: C语言、数字逻辑、电路;

单片机教学发展历程:

Intel 8051内核上发现,最新 STC8系列;

硬件资源:
64k Flash程序存储器
高速8051 kernel
指令集8051
RAM 256B
I/O 输入输出、开关量
串行口 I2C SPI UART USB
15 * 12bit ADC
8 * PWM

元器件及实验箱

KEIL 开发仿真环境

ISP 程序下载

配置I/O口、设置工作方式

电灯大师启航,运用开发板原理图+芯片手册+KEIL C工程+ ISP下载,完成一个STC8H8K64实例,窥见一斑,留给我深刻印象。

QQ图片20230905035047.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-5 11:29:43 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:41 编辑

陈教授《STC最新8051单片机原理及应用--STC8H8K64U》(7月26日) -- 学习笔记

数字电路、数字逻辑:高/低电平、上升/下降沿、显/隐性电平,与、或、非、异或,真值表

软件开发项目:单片机特点,集成度高/体积小,功耗低(Normal Mode -->2.09mA, Idle Mode-->0.48mAc),可靠性高,工业场合,片内看门狗(操作寄存器),价格低(MCU价格不决定产品陈本,开发模式、人工成本、技术成本等)

寄存器编程和库函数编程方案

程序在线仿真:STC8H8K-->ISP工具-->KEIL仿真设置-->头文件加载-->USB口进行仿真-->将单片机设置仿真芯片(Off ON)-->KEIL-->Debug-->Use: STC Monitor-->Run to Me-->Crystl: 11.0592MHz

单步执行调试程序


微机结构框架:传统8051内部结构:运算器:TMP暂存寄存器,控制器:堆栈指针,存储器:RAM、程序存储器,I/O接口:通道、锁存器(写入新数据前,保持不变),

扩展RAM、扩展Flash

STC8H内部组成:外设接口扩展

CPU内运算器,程序状态寄存器:PSW 字节地址D0H,位定义, 汇编语言操作

存储器:程序存储器、数据存储器,独立编址,片内3个物理独立存储空间。

        0000H~FFFFH 64K 程序Flash存储器 复位后,程序计数器内容0000H,从0000H单元开始执行程序;Flash中有特殊单元,中断程序入口地址/中断向量,中断响应,自动调转中断入口地址执行程序,0003H-->INT0, 000BH--->TIMER0 等等,里面跳转具体中断函数地址,后面仔细学

        00H~7FH    低128字节内部RAM 内部数据存储器
        基本RAM区

        80H~FFH    高128字节内部RAM 内部数据存储器 特殊功能寄存器占用地址重叠(通过指令系统不同寻址方式区分)

        0000H ~ 1FFFH 8192字节扩展RAM 扩展数据存储器

开发者需清楚自己的程序存储在什么地方,数据存储在什么地方

##################################################
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-5 17:42:51 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:35 编辑

《STC最新8051单片机原理及应用--STC8H8K64U》(陈教授 8月2日) -- 学习笔记

2023年全国大学生电子设计竞赛试题


电路设计、软件编程、寄存器设置: 单片机发挥功能就是通过特殊功能寄存器的设置实现的,高128字节RAM和相同地址特殊功能寄存器通过寻址方式区分访问


特殊功能寄存器:传统特殊功能寄存器(SFR)、扩展特殊功能寄存器(XFR)


扩展数据存储区: XRAM,内/外部(8051内核的内部外部) C语言将大变量或数组存放xdata语法:声明时 unsigned char xdata  i = 0;


//单片机的程序最后是一个死循环,不允许返回,单片机没有操作系统


LQFP64封装引脚:
        第一脚,丝印小圆点、逆时针
        I/O口,“/”--功能,第一功能,复用功能
        PDIP40封装,双列直插,便于学习和调试
        特色点,支持一路USB,通过USB下载程序 P3.0 P3.1  供电、复位、下载、调试功能集成


逻辑符号图:原理图、分类汇总。P1.2 牺牲 I2C SS  P5.4可配置


引脚:电源引脚、外接晶振引脚、复位和控制引脚(NRST P5.4复用,ALE P4.5复用,外部扩展),输入输出引脚


I/O口: 开关量、复用(通讯、串行等),工作模式四种:
    1、准双向口/弱上拉模式 (输入输出)
    2、推挽输出/强上拉模式(驱动)
    3、高阻输入(仅输入)
    4、开漏模式
    两个控制寄存器控制 PnMx I/O 口配置小工具(ISP), 注意除P3.0和P3.1外,IO口上电后的状态均为高阻状态;


IO口复用功能:功能引脚切换
        P0口 数据总线(D7~D0)、地址总线低8位(A7~A0),ADC输入、串口3、串口4、PWM输出控制
        P1口 ADC输入、串口3等
        P2口 地址总线高8位(A7~A0)、SPI 、I2C、PWM
        P3口
        P4口 读写控制信号等
        P5口
        通过设置相关的特殊功能及粗气实现的。(isp高级配置小工具)


IO口使用: 上拉电阻连接,尽量采用灌电流不用拉电流,注意姚评估电流、上拉电阻选择,典型的三极管控制电路(控三极管、控达林顿管、控场效应管),IO外部状态的输入--加延时


单片机典型应用系统:非总线扩展方式,总线扩展方式(8位数据总线P0,16位地址总线P2和P0口构成,P4.2 WR / RD P??)


汇编语言程序设计


有助于原理理解,操作系统移植过程中用到少许,如果不学汇编、今后没地方学了,老师教的;
(通过环境去学)
1、伪指令  程序放在哪个地方,编译后不产生目标程序 程序员把程序、子程序或数据块存在在存储器指定位置
      设置起始地址ORG(ORIGIN)    ORG addr16
      例 ORG 2000H MOV A,20H   //若在源程序开始不放ORG指令,则从0000H开始
2、DB定义字节(Define Byte), 存入从标号开始的连续单元
    例 HERE: DB 84H
                  DB 43H
    例 ORG: 1000H
        SEG: DB 23h, 'MCS-51'
3、定义自 word DW
4、为标号赋值EQU 将语句操作数的值赋予本语句标号,等值指令  例 BLK EQU 10000H
5、DATA指令 BUFFER DATA 40H 一个内部RAM地址赋给指定的符号名
6、XDATA
7、定义位BIT
8、文件包含INCLUDE      $INCLUDE(STC8H.INC)    SFR的名称就可以用了
9、源程序结束 END

MSC51汇编语言项目代码框架

汇编语言的调试: .asm   


stc8h 转到 stc32 系列
头文件
######################################################


截图202309051340241180.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-5 23:38:10 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:42 编辑

《STC最新8051单片机原理及应用--STC8H8K64U》(陈教授 8月7日) -- 学习笔记



汇编语言

$INCLUDE(文件名)     $NOMOD51(不链接汇编器传统8051头文件) $INCLUDE(STC8H.H)

#######^伪指令^###########################################

机器语言-->二进制数表示的指令-->CPU直接识别和执行的程序形式     例:24 8B

引入助记符,汇编语言的指令 :操作码和操作数组成   操作码用预定义的缩写英文,助记符

ADD A, #8BH          ---> 24H 8BH
MOV A, #76H         ----> 74H 76H

8051内核指令系统常用操作码:
MOV MOVX MOVC/ ADD SUBB MUL DIV/ AJMP(SJMP LJMP) JZ JC JB (JNC JNB JNZ) ACALL (LCALL) RET CJNE/ ANL ORL XRL

操作数: 操作对象     MOV A, #ABH   --->MOV A, #0ABH (前导零,汇编器用)

汇编语言一般格式:: 【标号】 操作码助记符 【第一操作数】【,第二操作数】【,第三操作数】【;注释】

操作数:例: (分号注释) (KEIL中C的注释方法也可识别)
        RETI                             ;无操作数
        CPL A                            ;一个操作数
        ADD A,#56H                  ;两个操作数
        CJNE R2,#60H,LOOP      ;三个操作数

指令代码!!!!!
截图202309051957046682.jpg

8051指令的常用符号及含义 ~~~~~~~

寻址方式:得到操作数所在单元地址的方法-->寻址方式

      1、立即寻址 ~~立即数
      2、寄存器寻址 ~~ INC R5
      3、直接寻址~~直接操作操作数的地址 ~~ MOV A,45H
      4、寄存器间接寻址 ~~ 操作数的地址 ~~MOV A,@R0   MOVX @DPTR,A
      5、变址寻址~~基址加偏移量~~MOVC A, @A+PC ~~A 变址存储
      6、相对地址 ~~ JC 80H
      7、位寻址 ~~位操作
截图202309052041317196.jpg 字节地址,位地址

《STC8H芯片文档》中有汇编详解部分!!!!!

高校教学方式优化,实验室和教室结合,理论马上实践,学习指令系统

数据传送类指令: 数据传送、数据交换、堆栈操作

MOV <目的字节>,<源字节>
屏幕截图 2023-09-05 230250.png 屏幕截图 2023-09-05 230630.png


MOVX
屏幕截图 2023-09-05 231715.png

MOVC
屏幕截图 2023-09-05 232540.png


数据交换指令:字节交换指令 XCH, 半字节交换指令XCHD    ~~X CHANGED

堆栈操作指令: 内部RAM一段区域 ~~LIFO ~~当前栈顶地址用堆栈指针寄存器SP值表示 ~~SP始终指向栈顶


    保护现场,压栈、出栈
    PUSH ACC
    PUSH PSW


    POP PSW
    POP ACC


逻辑操作指令: 24条  (后面再仔细看一下)


算数运算类指令:


######################################################################
QQ图片20230905035047.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-6 10:03:10 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:43 编辑

《STC最新8051单片机原理及应用--STC8H8K64U》--8月9日 --学习笔记

单片机从中小学抓起,“玩”起来,智能车,C语言,中小学依葫芦画瓢


汇编语言指令系统 看教材、看手册。技术性企业家。思考角度:如果我是初学者,我应该怎么样。




位操作指令:位传送、为状态控制、位逻辑操作、位条件转移 ,17条   (把指令表打印出来)

MOV CLR CPL SETB ANL ORL JC JNC JB JNB JBC

例 片内RAM中(20H)= 79H, MOV C,07H ;07H是位地址,即字节地址20H的第7位,将使(C) = 0         ()--》取内容
屏幕截图 2023-09-06 075911.png

跳转,rel位置用标号地址,程序可读性好、偏移量汇编器来算

控制转移类指令: 控制程序走向、子程序调用和返回指令

        LJMP AJMP SJMP JMP JZ JNZ(判0转移) CJNE(比较转移) DJNZ(循环转移) LCALL ACALL RET RETI NOP

        各循环流程图
        例,实现延时

典型例子,Keil实操,指令组合、实现功能,汇编语言怎么实现:

传感器 + 单片机  电力  + 单片机 赋能

1、汇编程序设计的步骤和框架: 0,布电路板  1、先正确性,再尽可能优化性能等; 设计有规范(华为); 分析课题,确定算法和思路,画出流程图、根据算法分配资源(列个表),根据流程图编程序.asm(汇编语言开发效率低)、调试,确定源程序(通过软件模式--逻辑,在线调试--硬件仿真调试,仿真器!!),‘从实践到实际’,模块化的程序设计方法

2、框架:单片机的知识、 不需要背、不需要记、程序流程图:分支、查表、循坏、定点数、数据排序
屏幕截图 2023-09-06 095823.png


######################################################################################################################
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-6 13:36:06 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:23 编辑

STC最新8051单片机原理及应用--STC8H8K64U》(8月14日)--课堂笔记



C51对ANSI C的扩展:关键字: __at__ sbit sfr bit sfr16 idata bdata xdata pdata data code alien small compact large using reentrant interrupt __task__


数据类型:
屏幕截图 2023-09-06 110530.png 屏幕截图 2023-09-06 110807.png


特殊功能寄存器的定义,头文件

程序存储器 code  不变的,表格常数,存储code区,程序存储区,节省内部RAM, unsigned char code led_buf[10] = {};

内部RAM:
        data 直接寻址区 内部RAM低128字节,地址范围00H~7FH,声明的变量
        idata 间接寻址区 整个RAM, 256B , 00H~FFH
        bdata 可位寻址区,20H~2FH

外部数据存储器:xdata 0000H~0FFFFH 64k    unsigned char xdata arr[300][2];

Keil C51 指针:  一般指针    存储器指针
        unsigned char xdata *pt;
       unsigned char  xdata * data pt; //pt被保存在内部RAM中
       unsigned char xdata * xdata pt;//pt被保存在外部RAM中
        volatile-- 不要进行优化

函数:
void UART1_ISR (void) interrput 4
{
}

运算:
运用正逻辑代替反逻辑

程序框架:
屏幕截图 2023-09-06 130153.png


例: FLASH 作为EEPROM ,0x0400单元    (芯片手册第18章 EEPROM访问,要看手册,相关寄存器操作, IAP!!!)
屏幕截图 2023-09-06 132138.png flash的操作





截图202309061335283401.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-7 00:40:11 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:22 编辑

2023年8月16日 《STC8H8K64U教学》 学习笔记


中断、中断源、 中断服务、 中断响应、 中断返回、优先级别、  中断嵌套、(没有操作系统的MCU)

计算机的技术 改善CPU浪费    计算机在执行程序的过程中,当出现了某些异常事件或某种请求,CPU暂时中止正在执行的程序(PUSH),转而区执行对异常事件或某种请求的服务程序。当服务完毕后,CPU再回到被暂时中止的程序继续执行(RETI)。

截图202309061805535198.jpg 中断由硬件触发!!! 截图202309061807339996.jpg 8051响应中断,LCALL ,当前正在执行的指令,DMA内存直通,由挂起状态

中断优势: 速度、处理随机参数和信息,处理故障能力
中断允许或禁止  (使能)
保护现场和恢复现场 (功能) 堆栈操作 寄存器的值
堆栈  一口井 SP始终指向栈顶   低地址-高地址 后进先出
中断请求标志应该撤出返回主程序之前: 自动撤除、指令撤除

STC8H8K64U的中断资源:44 个
INT0~INT4    T0~T4     UART1~UART4   SPI  I2C USB  ADC LVD CMP PWMA PWMB P0~P7 DMA RTC LCM
中断源:中断请求   中断允许控制    中断优先级别   
截图202309062358328094.jpg

中断源及控制 : 中断查询次序
中断标志位: 所有的外部中断、所有的定时器中断,自动清零;   串口中断不能自动清零 SCON 98H TI=0; RI=0;


中断的开放与禁止:  IE 0A8H     E-->ENABLE  P--> Priority

中断响应的条件和过程: 中断响应周期、 有请求-->IE相应置位--> CPU中断开放EA=1-->LCALL-->点地址push堆栈-->中断服务程序入口地址送入程序计数器PC-->程序转向相应中断程序


"自己测一下,自己亲自测过对问题比较清楚"

中断服务: 中断服务入口地址开始执行,直到RETI。    保护现场、中断服务、恢复现场、中断返回(基于汇编语言,C编译器搞定) 中断请求的撤除、自动、手动

//C描述
#include "stc8h.h"

void INT0_ISR(void);

void main(void)
{
P4M1 = 0XFF;
P4M0 = 0XFF;

P6M1 = 0;

P6M0 = 0;

P3M1 = 0X50;
P3M0 = 0X50; //P3.4 P3.6 开漏


IT0 =1;
EX0 = 1;
EA =1;

P40=0;
P60=1;
while(1);
}

void INT0_ISR(void) interrupt  0
{
P60 = ~P60;
}

//汇编描述
$INCLUDE(STC8H.INC)
    ORG 0000H
    LJMP MAIN
    ORG 0003H
    LJMP INT0_ISR
    ORG 0200H
MAIN:
    MOV SP,#80H
    MOV P4M1,#0FFH
    MOV P4M0,#0FFH

    MOV P6M1,#0

    MOV P6M0, #0

    MOV P3M1,#50H
    MOV P3M0, #50H

    SETB IT0
    SETB EX0
    SETB EA

    CLR p4.0
    SETB P6.0
    SJMP $

INT0_ISR:
    CPL P6.0
RETI

END
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-7 07:06:06 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:31 编辑





################################9月5日################################################

类型限定符:

const (constant)声明的变量不能在程序中赋值,定义何访问常数且不能更改的对象;const unsigned short xdata a[10]m={}; cosnt unsigned short code
const char mask[] = {}
unsigned char *p = mask;
*p = 'a'//不报错但无效果
   
const char *cp = mask;
*cp = 'a' //不符合逻辑

volatile 易失性类型限定符用于限制编译器对对象值的假定,引入volatile关键字来告诉编译器不要优化限定对象,深入理解程序运行的本质;

void main()
{
    volatile char edata a = 100,b =-90, c;   //edata空间存放 Option --》Target--》Memory
    volatile int edata d=10000,   e, f;
    volitale long int edata

}

~~~~~~~~~~~~~~~~

################################9月6日###################################################

非电信号 --> 传感器 --> 电信号 -->信号调理(放大/降压)-->ADC -->数字量 ---单片机---具体处理--送通信或送显示
模拟电信号 --------------------------->  信号调理(放大/降压)-->ADC -->数字量---单片机-- 具体处理--DAC--模拟量放大输出等 --调速等
开关量输入输出
顶级DAC--播放器

传感器: 非电量--电信号 , 传感器、采样点、放大器、抗干扰、传输、电源,   电信号:连续量、离散量、模拟量、开关量、脉冲量,,,仪器仪表

模数转换器的工作原理和性能指标:逐次逼近式、双斜率积分、等
    逐次逼近: 假设数据送DA转换成VC与输入VX进行比较,再根据比较情况修正  (过秤,哪个砝码保留、哪个砝码不合适、最后平衡点)
    工作过程: SAR寄存器,最高位置1,其余0,DA转换,比较器、一直看到最低位,数字量读出来
    外围器件,ADC 性能指标 分辨率


~~~~~~~~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-7 14:06:04 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:24 编辑

2023/08/21 STC8H8K64U教学 听课笔记





截图202309070807313981.jpg 截图202309070810279254.jpg 定时器计数器 实际项目一定会用


加1计数器 脉冲 不分频--精度更高

C/T = 0 OSC脉冲/分频 定时器; C/T = 1 Tx端 计数器
··
T0 T1 : 工作模式 TMOD 89H 高半字节T1 低半字节T0  模式设定问题~~
截图202309070938277226.jpg
T2 工作模式: AUXR 8EH 固定为16位自动重载
截图202309070944242914.jpg

相关寄存器:TMOD TCON AUXR INTCLKO T3T4M
会查手册、会看教材
     TMOD;   C/T M0 M1
      TCON ;    TF1 TF0 TR1 TR0
     AUXR ;  SPEED
      INTCLKO;   
      T4T3M;    T4[7-4]/ T3[3-0]
     定时器的重新装载寄存器

实例:

定时器的最大定时能力 :  11.0592MHZ 12分频    1个计数周期 1微妙

定时器定时量程的扩展:软件扩展方法、硬件扩展方法、RTC定时、串联T0、1、2、3、4;

定时器应用: 可编程的外设,,,第一步初始化、寄存器写入;第二步,中断函数设计

1、设置工作方式,将控制字写入方式寄存器      TMOD      C/T AUXR  T4T3M
2、把初值装入TLn、THn寄存器
3、职位TRn以启动定时计数
4、置位ETn允许定时计数中断
5、置位EA使CPU开中断

清零清的要彻底 TF0= 0

选择定时器T0工作方式: 软件启动(TR0)、定时方式(C/T=0)、16位定时器(M1M0 = 00)、方式字00H (tmod)

T0 装入初值: 4C 00 H  高八位 第八位

TIMEROINIT:

//汇编实现
$INCLUDE (STC8H.H)
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_ISR
ORG 0200H
MAIN:
MOV SP,#80H
MOV P4M1,#0FFH
MOV P4M0,#0FFH
MOV P6M1,#0
MOV P6M0,#0
CLR P40
LCALLTIMER0_INIT
MOV A,#10
SETB ET0
SETB EA

TIMER0_INIT:
ANL AUXR,#07FH
ANL TMOD,#0F0H
MOV TL0,#000H
MOV TH0,#04CH
CLR TF0
SETB TR0
RETI

T0_ISR:
DEC A
JNZ EXIT
CPL P60
MOV A,#10
EXIT:RETI

END

//C

#include "stc8h.h"
unsigned char t0cnt;

void Timer0_Init(void);

void main(void)
{
P4M1=0XFF;
P4M1=0XFF;
P6M1=0X0;
P6M0=0X0;
P40=0;
Timer0_Init();
t0cnt =10;
ET0=1;
EA=1;
while(1);
}
void Timer0_Init(void)//T0初始化函数
{
AUXR $= 0X7F;
TMOD$=0XF0;
TL0=0X00;
TH0=0X4C;
TF0=0;
TR0=1;
}
void T0_ISR(void) interrupt 1//T0中断服务函数
{
t0cent--;
if(t0cent==0)
{
p60= ~p60;
t0cent=10;
}

定时器初始化代码,ISP中自动生成

不能位寻址的寄存器  字节操作方式: ASM MOV ANL ORL                C : = &=  |=


113008xjqo1xsxoxjqo9zj.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-7 23:52:34 | 显示全部楼层
2023/08/23,  STC8H8K64U教学 ,串口,学习笔记



数据交换、串行通信、计算机测控、物联网、疯狂的小车


STC8H8K64U: 4*UART /1* SPI /1* I2C/ 1*USB


数据通信:信——>数字量              并行通信(一次通信多个位)、串行通信(分组、异步),实体间注意共地(地飘)


RS232   RS485  


异步通信的起始位和停止位    串行通信 显性拉低   传统串行异步通信从地位开始发送


双方(CPU、外设)要设定好字符的编码格式、奇偶检验格式、起始位和停止位, 还有波特率  常见9.6K (19.2k lin)   \

单工、半双工、全双工    多终端通信


截图202309072151368029.jpg 截图202309072152541664.jpg

串入并出---》数据总线---》cpu
外部时钟 进行 同步  每一个位再细分 采用多次,K= 16或64 采样多次!!始终上升沿开始(足够多的上升下降沿):每一个位提高采样准确率的方案!


STC8H8K64U 串口相关寄存器:

沿用并扩展15系列串口  每个串口由2个数据缓冲器、1个移位寄存器、1个串行控制器存期、1个比特率发生器
接收缓冲器和发送缓冲器共用一个地址好,但物理上是完全独立的
截图202309072326547040.jpg

位号!
截图202309072329287274.jpg

多机通信过程:
1、主从初始化为模式2或3 置SM2=1,允许中断
2、主机置TB8=1,发送要寻址的从机地址
3、所有从机均收到,进行地址比较
4、被寻址从机,置SM2=0,向主机返回地址,供主机核对
5、主机核对后,发送发送指令
6、从从通信需要主机中介
7、本次通信结束后,主从重置SM2=1,主机继续调度

应用层协议  RS485等

单机通信
RIPTI:
PUSH PSW
PUSH ACC
SETB PSW.4
SETB PSW.3
CLR TI
MOV A,@R0
MOV C,P
MOV TB8,C     ;
MOV SBUF,A
INC R0
POP ACC
POP PWS
RETI


从机寻址控制寄存器L  SADDR 通过  SADDEN 掩码
数据缓冲器 SBUF  RXD---》移位寄存器--》 SBUF
截图202309072349286080.jpg




回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-24 17:16 , Processed in 0.129122 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表