找回密码
 立即注册
楼主: YKB345

今天开始学习stc32

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-6-30 18:22:38 来自手机 | 显示全部楼层

第七集 STC8H8K64U的汇编语言程序设计进阶,宏汇编

这节课的内容主要讲解了汇编语言的相关知识
操作数
操作数是一条指令操作的对象。操作数可以是数据,也可以是地址。不同功能的指令,操作对象形式不同。
不同指令的操作数特点如下:
(1)传送类指令,必须指明操作对象从哪儿来(源地址),传到何处去(称为目的地址)
数据操作类指令,一般靠运算器完成,数据操作类指令的对象一般是两个。
程序控制类指令的操作对象是程序计数器PC和一个数。
逻辑操作类有单操作数和双操作数之分。
还讲解了汇编寄存器的寻址方式
汇编语言对于我之前学的库函数困难多了{:5_288:}
mmexport1719742899578.jpg
mmexport1719742897843.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-6-30 18:52:40 | 显示全部楼层

第八集 汇编指令一(数据传送/逻辑运算/算术运算)笔记

本帖最后由 YKB345 于 2024-6-30 18:57 编辑

数据传送类指令简介
数据传送类指令是使用频率最高的一类指令。主要用来给8051单片机系统的内部和外部资源赋值、进行堆栈的存取操作等。数据传送类指令执行前后,对程序状态字PSW一般不产生影响。按其操作方式,又可把它们分为三种:
数据传送
数据交换
栈操作。
还讲到了算数指令算术运算类指令主要完成加、减乘、除四则运算,以及增量、减量和二十,大多数算术运算指令会影响到状态标志寄进制调整操作。除增量、减量指令夕指令对标志位的影响。存器PSW。


二-十进制调整指令是对二-十进制的加法进行调整的指令。两个压缩型BCD码按二进制数相加,必须经过本条指令调整后才能得到压缩型的BCD码和数。
指令的操作过程为:若相加后累加器低4位大于9或半进位标志AC=1,则加06H修正;若相加后累加器高4位大于9或进位标志CY=1,则加60H修正;若两者同时发生或高4位虽等于9但低4位修正有进位,则应加66H修正。


微信图片_20240630185646.png
微信图片_20240630185654.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-6-30 19:06:59 | 显示全部楼层

第九集 汇编指令二(位操作/控制转移)笔记

汇编语言的应用还是非常广泛的在这里老师分了好几节课分块进行讲解这节讲的是汇编指令的位操作指令和控制转移指令
位操作指令以位为处理对象,分别完成位传送、位状态控制、位逻辑操作、位条件转移等功能,共有17条。可被汇编程序所识别的位地址表示方式如下:
1)直接用位地址(十进制或十六进制数)表示,或写成位地址表达式表
2)写成“字节地址.位数”方式。例如0B8H.0,20H.1等。
3)位寄存器的定义名称,如C、EA等。
4)对于位寻址寄存器,可以用“字节寄存器名.位数”表示。例如P1.0,PSW.4等,
5)用户使用伪指令事先定义过的符号地址
老师还讲了程序转移指令
1.程序转移指令
(1)无条件转移指令
(转移或者跳转),它表示要把无条件转移指令操作码助记符中的基本部分是“JMP”目标地址(要转去的某段程序第一条指令的地址号)送入程序计数器PC,根据转移距离和寻址方式不同又可分为LJMP(长转移)、AJMP(绝对转移)、SJMP(相对短转移)和JMP(间接转移)
1)长转移指令
指令提供16位目标地址,将指令中第二、第三字节地址码分别装入PC的高8位和低8位中,程序无条件转向指定的目标地址去执行,不影响标志位。
程序转移指令是一条极其有用的多分支选择转移指令,其转移地址不是行时动态决定的。因此,可在DPTR中装汇编或编程时确定的,而是在程序运入多分支转移程序的首地址,而由累加器A的内容来动态选择其中的某一个分支予以转移,这就可用一条指令代都众多转移指令,实现以DPTR内容为起始的256个字节范围的选择转移。
屏幕截图 2024-06-30 190259.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-6-30 19:12:03 | 显示全部楼层

第十集 汇编语言程序设计的一般步骤和基本框架内容笔记

汇编语言程序设计的一般步骤和基本框架
程序是指令的有序集合。编写一个功能完善的、完整的程序,正确性是最主要的,但整个程序占内存的空间大小、每条指令的功能、长度执行速度等都要考虑,尽可能使其优化。
个完善的系统设计应该具有设计方案正确、程序结构规范等基本性质,这不仅给程序的设计和调试带来方便,加速调试过程,而且有益于程序的维护和升级。
汇编语言程序设计的一般步骤
分析课题,确定算法或解题思路
根据算法或思路画出流程图
根据算法要求分配资源,包括内部RAM、定时器、中断等资源的分配
外及功能分配
根据流程图编写程序。
上机调试源程序,进而确定源程序。
屏幕截图 2024-06-30 191136.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-05-08 00:01:49
已绑定手机

19

主题

3196

回帖

4956

积分

论坛元老

积分
4956
发表于 2024-6-30 19:24:07 来自手机 | 显示全部楼层
汇编语言不好学啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-6-30 20:46:15 | 显示全部楼层
学习过STM再来学习STC,觉得很小儿科的吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-7-1 10:27:54 来自手机 | 显示全部楼层
xxkj2010 发表于 2024-6-30 20:46
学习过STM再来学习STC,觉得很小儿科的吧

没有没有{:5_324:}stm我学的是是标准库和hal库没有使用汇编语言编写过这个stc用汇编语言编写我还是第一次接触之前只了解过汇编语言但没有学过哈哈其实学会了都挺简单的{:5_296:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-7-1 10:28:52 来自手机 | 显示全部楼层
soma 发表于 2024-6-30 19:24
汇编语言不好学啊

确实不好学{:5_340:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-08 08:03:39

109

主题

1918

回帖

5324

积分

论坛元老

积分
5324
发表于 2024-7-1 11:38:43 | 显示全部楼层
YKB*** 发表于 2024-7-1 10:27
没有没有stm我学的是是标准库和hal库没有使用汇编语言编写过这个stc用汇编语言编写我还是第一次接触之前 ...

现在还用汇编语言写?太浪费时间和精力了吧。
用C吧,官方例程和网上的资料基本都用C写的。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-07-01 10:22:38

1

主题

15

回帖

69

积分

注册会员

积分
69
发表于 2024-7-1 11:51:13 | 显示全部楼层

第十一、十二集 单片机C语言程序设计导入摘要笔记

本帖最后由 YKB345 于 2024-7-1 11:53 编辑

C51对ANSI C的拓展经过老师的讲解和我在网上查找的资料我汇总了一下这两节课的内容
存储器和寄存器关键字:
data:直接寻址区,用于内部RAM的低128字节(00H-7FH)。
idata:间接寻址区,包括整个内部RAM区(00H-FFH)。
bdata:可位寻址区,主要用于20H-2FH区域。
xdata:可指定多达64KB的外部直接寻址区,地址范围0000H-0FFFFH。
pdata:能访问1页(256Bytes)的外部RAM,主要用于紧凑模式。
sfr(特殊功能寄存器声明):用于声明和访问8051提供的128Bytes的SFR寻址区,例如sfr P0=0x80;表示PO口地址为80H的常数。
sbit:用于访问可位寻址的特殊功能寄存器中的某个位,例如sbit EA=0xAF;指定第0xAF位为EA,即中断允许。
中断和寄存器组:
interrupt:中断函数声明关键字,如void serial_ISR() interrupt 4 [using 1];表示一个中断服务程序,中断号为4,使用寄存器组1。
using:寄存器组定义关键字,用于指定中断服务程序使用的寄存器组。
数据类型:
除了ANSI C中的基本数据类型(如char, int, float等)外,C51还增加了与硬件直接相关的特殊数据类型,如上述提到的sfr和sbit。
指针:
C51支持一般指针(Generic Pointer)和存储器指针(Memory_Specific Pointer),允许开发人员更精确地控制数据的存储和访问。
函数调用和参数传递:
由于8051体系结构和编译器的限制,C51在函数参数传递上与ANSI C有所不同。在C51中,函数参数通常通过寄存器或固定的内存位置传递,而不是通过堆栈。
函数指针:
C51的函数指针使用也有其特殊性。由于8051寄存器数量的限制,函数指针最多只能传递3个参数。如果需要传递更多参数,可以使用结构体和指针作为参数。
跳转和程序执行:
C51允许程序员直接跳转到特定的地址执行代码,这在引导程序设计和调试时非常有用。
其他特性:
C51还提供了其他与硬件紧密相关的特性,如位操作、I/O控制、定时器和计数器配置等,这些功能在ANSI C中并没有直接对应。
同时老师还进行了代码的讲解
屏幕截图 2024-07-01 115037.png
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 03:22 , Processed in 0.125536 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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