找回密码
 立即注册
楼主: 我心飞扬

学习--视频教学《USB型 1T 8051 单片机原理及应用-8H8K64U》山东大学陈桂友教授--打卡

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 4 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡6

第六集:I/O口的工作模式,STC8H8K64U的汇编语言程序设计,初步入门

笔记:

续上节课:2.3 I/O口的复用功能。
截图202510241602066417.jpg 截图202510241602584205.jpg 截图202510241603497685.jpg 截图202510241604244296.jpg
续上节课:2.4 I/O口的使用。
截图202510241605235443.jpg 截图202510241607122118.jpg
续上节课:2.5 单片机应用系统的典型构成。
截图202510241608275671.jpg 截图202510241610154249.jpg 截图202510241611361684.jpg

1、汇编语言程序设计基础知识。
学习汇编语言还是基础和重要的。
1.1 伪指令。
截图202510241615062720.jpg 截图202510241620227906.jpg 截图202510241621235424.jpg 截图202510241622495974.jpg 截图202510241624115477.jpg 截图202510241625442844.jpg
1.2 汇编语言程序框架。
截图202510241628215808.jpg

2、汇编语言程序仿真过程。
与C语言程序的仿真过程类似。

学习心得:

1、一切都要遵循MCU的物理逻辑框架,设置好参数。才能让I/O口执行想要的功能。

2、程序上也要遵循程序的的框架,才能安排好运算逻辑顺序。

3、不同语言程序的仿真几乎相同。

总结:

1、继续学习了I/O口的复用功能以及对应要设置特殊功能寄存器。

2、学习了I/O口使用中会用的上拉电阻的使用,拉电流、灌电流概念及特点,驱动三极管或MOS管的电路,高速MCU端口读写的延时的方法。

3、学习了单片机应用系统的典型构成,非总线扩展和扩展总线下的区别和特点。

4、学习了汇编语言的伪指令:ORG、DB、DW、EQU、BIT、DATA、XDATA、END、INCLUDE。

5、学习了汇编语言程序框架。

6、学习了汇编语言程序仿真过程。

后记:

1、此节课程简单,但记忆的东西较多。

2、开发程序记住程序流程,在端口设置时一般要查手册。

3、记住伪指令及汇编语言程序框架。

2025年10月24日。


学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 4 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡*

第*集:********

笔记:

1、。

2、。

3、。

学习心得:

1、。

2、。

3、。

总结:

1、。

2、。

3、。

后记:

1、。

2、。

3、。

2025年10月**日。

点评

请尽快回复您的打卡学习内容哦~不然平台会误认为水贴将其删除,感谢配合!!!  详情 回复 发表于 4 天前
学习MCU
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-10-27 08:33:29

16

主题

141

回帖

1216

积分

版主

积分
1216
发表于 4 天前 | 显示全部楼层
我心*** 发表于 2025-10-24 15:29
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡*

第*集:********

请尽快回复您的打卡学习内容哦~不然平台会误认为水贴将其删除,感谢配合!!!
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 4 天前 | 显示全部楼层
西西*** 发表于 2025-10-24 16:29
请尽快回复您的打卡学习内容哦~不然平台会误认为水贴将其删除,感谢配合!!! ...

这是我的一个写打卡内容的模板。空的。每次从这里复制出写新的打卡内容。滚动向前。学习完成后这个模板会删除的。
学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 4 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡7

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

笔记:

续上节课:伪指令。
$NOMOD51,告诉汇编器不使用预定义的寄存器名。

1、助记符语言。
1.1 助记符语言描述。
CPU认识的机器语言=二进制数表示的机器指令。人能看懂的汇编语言是一种助记符体系,汇编过程中,翻译成机器语言。汇编语言的指令由操作码与操作数构成。
1.2 操作码。
截图202510241929368382.jpg
1.3 操作数。
截图202510241931011653.jpg 截图202510241934224998.jpg

2、指令格式及分类。
2.1 汇编语言的概念及格式。
截图202510241939405471.jpg
截图202510241941184713.jpg
2.2 指令代码的存储格式。
截图202510241945033185.jpg
截图202510241945559111.jpg
2.3 指令中的符号约定。
截图202510241947344466.jpg

3、寻址方式。
3.1 立即寻址。
立即寻址也称立即数寻址,它是在指令操作数中直接给出参加运算的操作数,其指令格式形如:MOV A, #70H,这条指令的功能是将立即数70H传送到累加器A中。
3.2 直接寻址。
在直接寻址方式中,指令操作数域给出的是参加运算操作数地址。直接寻址方式只能用来表示特殊功能寄存器、内部数据寄存器和位地址空间。其中特殊功能寄存器和位地址空间只能用直接寻址方式访问。如:ANL 70H, #48H,表示70H单元中的数与立即数48H相“与”,结果存放在70H单元中。其中70H为直接地址,表示内部数据存储器RAM中的一个单元。
3.3 间接寻址。
间接寻址采用R0或R1前添加“@”符号来表示。例如,假设R1中的数据是40H,内部数据存储器40H单元所包含的数据为55H,那么如下指令:MOV A, @R1,把数据55H 传送到累加器。
3.4 寄存器寻址。
寄存器寻址是对选定的工作寄存器R7~R0、累加器A、通用寄存器B、地址寄存器和进位C中的数进行操作。其中寄存器R7~R0由指令码的低3位表示,ACC、B、DPTR 及进位C隐含在指令码中。因此,寄存器寻址也包含一种隐含寻址方式。寄存器工作区的选择由程序状态字寄存器PSW中的RS1、RS0来决定。指令操作数指定的寄存器均指当前工作区中的寄存器。如:INC R0;(R0)+1 → R0。
3.5 相对寻址。
相对寻址是将程序计数器PC中的当前值与指令第二字节给出的数相加,其结果作为转移指令的转移地址。转移地址也称为转移目的地址,PC中的当前值称为基地址,指令第二字节给出的数称为偏移量。由于目的地址是相对于PC中的基地址而言,所以这种寻址方式称为相对寻址。偏移量为带符号的数,所能表示的范围为+127~–128。这种寻址方式主要用于转移指令。如:JC 80H;C=1跳转指令表示若进位C为0,则程序计数器PC中的内容不改变,即不转移;若进位C为1,则以PC中的当前值为基地址,加上偏移量80H后所得到的结果作为该转移指令的目的地址。
3.6 变址寻址。
在变址寻址方式中,指令操作数指定一个存放变址基值的变址寄存器。变址寻址时,偏移量与变址基值相加,其结果作为操作数的地址。变址寄存器有程序计数器PC和地址寄存器DPTR。如:MOVC A, @A+DPTR,表示累加器A为偏移量寄存器,其内容与地址寄存器DPTR中的内容相加,其结果作为操作数的地址,取出该单元中的数送入累加器A。
3.7 位寻址。
位寻址是指对一些内部数据存储器RAM和特殊功能寄存器进行位操作时的寻址。在进行位操作时,借助于进位C作为位操作累加器,指令操作数直接给出该位的地址,然后根据操作码的性质对该位进行位操作。位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码加以区分,使用时应注意。如:MOV C, 20H,就是片内位单元位操作型指令。

学习心得:

1、语言规则挺多,指令的助记方式是记住英文全称。

2、语言中的符号约定要记准,不然理解指令会出错,编程就可能出偏差。

3、寻址方式平时感觉用不到,但能帮助理解程序运行的逻辑。

4、汇编程序是操作码和操作数的组合形成的机器逻辑时序流。

总结:

1、学习了机器语言与汇编语言的概念及对应关系。

2、学习了汇编语言的概念及格式,操作码和操作数组合形成的指令。

3、学习了机器码的存储格式。

4、学习了7种寻址方式:立即寻址、直接寻址、间接寻址、寄存器寻址、相对寻址、变址寻址、位寻址。

后记:

1、汇编语言概念容易理解,指令众多,英文全称能记住能提高记忆。

2、寻址方式较难理解,需要多看看。

3、指令中的符号约定也要记忆。

4、本节课内容较枯燥。

2025年10月24日。


学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 4 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡8

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

笔记:

1、数据传送类指令。
一般形式为 MOV <目的操作数> , <源操作数>
操作码包括MOV、MOVC、MOVX、PUSH、POP、XCH、XCHD、SWAP。
1.1 MOV是数据传送中使用的最多的一条操作码。MOV指令用于内部RAM之间数据的传送。具体内容见下:
指令        作用
MOV A,Rn                    ;工作寄存器的内容送A,n取0-7
MOV A,direct                ;将内部RAM中地址为direct的单元的内容送A
MOV A,@Ri                  ;利用R0和R1实现间接寻址,i只能取0或1
MOV A,#data               ;立即数寻址,将立即数data送到累加器A中
MOV Rn,A                    ;将累加器A的内容送给工作寄存器
MOV Rn,direct              ;直接寻址,内容送工作寄存器
MOV Rn,#data             ;立即数寻址,将data送给工作寄存器,目的地址为Rn时无间接寻址
MOV direct,A               ;A送地址为direct的RAM单元
MOV direct,Rn             ;Rn送RAM
MOV direct,dir2           ;RAM送RAM
MOV direct,@Ri           ;寄存器间接寻址送RAM
MOV direct,#data        ;立即数送RAM
MOV @Ri,A                 ;A送间接寻址地址
MOV @Ri,direct           ;RAM内容送工作寄存器间接寻址地址
MOV @Ri,data             ;立即数送寄存器间接寻址地址
MOV DPTR,#data16     ;16位立即数送DPTR
1.2 MOVC指令用于程序存储器与累加器A的内容传输,多用于查表。MOVC用法十分固定,只有下面两条指令。MOVC在使用时是访问内部程序存储器还是外部程序存储器由PSEN引脚决定。MOVC的用法是完全固定的,不可以创造指令,不要使用类似MOVC A,@DPTR这样的指令。具体内容见下:
指令        作用
MOVC A,@A+DPTR       ;DPTR基址加变址寻址,将程序存储器中的内容存在累加器A中
MOVC A,@A+PC           ;PC基址加变址寻址,将程序存储器中的内容存在累加器A中,PC保存的是下一条指令的首地址(程序存储器编址)。
1.3 MOVX指令用于对外部RAM进行访问。外部RAM编址由0开始,故必须区分MOV、MOVX才能避免冲突。具体内容见下:
指令        作用
MOVX A,@Ri                ;Ri间接寻址,将外部RAM内容写到A中
MOVX A,@DPTR           ;DPTR间接寻址,将外部RAM内容写到A中
MOVX @Ri,A                ;Ri间接寻址,将A内容写到外部RAM中
MOVX @DPTR,A           ;DPTR间接寻址,将A内容写到外部RAM中
1.4 PUSH和POP指令。压栈和弹栈指令。压栈和弹栈指令的本质就是将SP作为间接寻址寄存器,和内部RAM单元进行内容传输。只不过SP会自动增加或减少以在逻辑上维护这个内部RAM空间并将其称为栈。具体内容见下:
指令        作用
PUSH direct                 ;直接寻址,将内容保存在SP所指向的地址单元,SP+1
POP direct                   ;直接寻址,将SP所指向的地址单元内容弹到新地址,SP-1
截图202510251720143783.jpg 截图202510251721425438.jpg
1.5 XCH、XCHD、SWAP等交换指令。具体内容见下:
指令        作用
XCH A,Rn                    ;寄存器和A内容交换
XCH A,direct                ;A和内部RAM内容交换
XCH A,@Ri                  ;间接寻址,内容交换
XCHD A,@Ri                ;间接寻址,只交换低4位
SWAP A                      ;A的高四位和低四位交换
1.6 数据传送类指令的注意事项。
截图202510251723308272.jpg

2、逻辑运算类指令。
逻辑运算类包括与、或、异或、清除、求反、左右移位等逻辑操作。具体内容见下:
指令        作用
CLR A                        ;清零A
CPL A                        ;按位取反,不影响标志位
RL A                          ;循环左移
RLC A                        ;带进位的循环左移,CY作为第九位
RR A                         ;循环右移
RRC A                       ;带进位的循环右移
ANL A,Rn                ;逻辑按位与,保存到A
ANL A,direct            ;逻辑按位与,保存到A
ANL A,#data           ;逻辑按位与,保存到A
ANL A,@Ri              ;逻辑按位与,保存到A
ANL direct,A              ;逻辑按位与,保存到direct
ANL direct,#data       ;逻辑按位与,保存到direct
ORL A,Rn               ;逻辑按位或,保存到A
ORL A,direct           ;逻辑按位或,保存到A
ORL A,#data          ;逻辑按位或,保存到A
ORL A,@Ri             ;逻辑按位或,保存到A
ORL direct,A             ;逻辑按位或,保存到direct
ORL direct,#data      ;逻辑按位或,保存到direct
XRL A,Rn               ;逻辑按位异或,保存到A
XRL A,direct           ;逻辑按位异或,保存到A
XRL A,#data          ;逻辑按位异或,保存到A
XRL A,@Ri             ;逻辑按位异或,保存到A
XRL direct,A             ;逻辑按位异或,保存到direct
XRL direct,#data      ;逻辑按位异或,保存到direct

3、算术运算类指令。
操作码有ADD、ADDC、SUBB、INC、DEC、MUL、DIV、DA。具体内容见下:
指令        作用
ADD A,Rn                ;寄存器内容加到累加器
ADD A,direct            ;直接寻址内容加到累加器
ADD A,@Ri              ;寄存器间接寻址内容加到累加器
ADD A,#data           ;立即数加到累加器
ADDC A,Rn              ;寄存器内容加到累加器(考虑进位位Cy)
ADDC A,direct          ;直接寻址内容加到累加器(考虑进位位Cy)
ADDC A,@Ri            ;寄存器间接寻址内容加到累加器(考虑进位位Cy)
ADDC A,#data         ;立即数加到累加器(考虑进位位Cy)
SUBB A,Rn              ;累加器内容减寄存器内容(考虑Cy)A-(Rn)-Cy
SUBB A,direct          ;累加器减直接寻址内容(考虑Cy)A-(direct)-Cy
SUBB A,@Ri            ;累加器减寄存器间接寻址内容(考虑Cy)
SUBB A,#data         ;累加器减立即数(考虑Cy)
INC A                     ;累加器加1
INC Rn                   ;工作寄存器加1
INC direct               ;直接寻址地址内容加1
INC @Ri                 ;寄存器间接寻址地址内容加1
DEC A                    ;累加器减1
DEC Rn                  ;工作寄存器减1
DEC direct              ;直接寻址地址内容减1
DEC @Ri                ;寄存器间接寻址地址内容减1
INC DPTR              ;DPTR加1,实际就是DPL+1并自动向DPH进位
MUL AB                 ;A内容乘寄存器B内容保存到A中
DIV AB                  ;A内容除寄存器B内容保存到A中
DA A                     ;累加器十进制调整
补充说明:
单片机在进行运算操作时会影响程序状态寄存器PSW中的程序状态标志位。
截图202510251702406594.jpg
P标志位只考虑A中1的奇偶个数,只要对A的内容进行修改均会影响P的内容。
CY和AC标志位仅在加减操作时会被影响:当运算发生进位或借位时,CY置1;否则清0;当低四位向高四位发生进位或借位时,AC置1,否则清0;
OV标志位在加减乘除时均受影响,OV实际保存的是第六位与第七位进位异或的结果。只有当第六位和第七位只有一个发生进位或借位时,OV才会置1,否则清0。


学习心得:

1、指令分类别,按照操作数区分寻址方式,对应上MCU内部存储结构、ACC、PC、SP、PSW、SFR、XFR、I/O口的逻辑框架才好理解。

2、仿真很方便,能提高学习、开发效率。

总结:

1、学习了数据传送、逻辑运算、算术运算的相关指令用法。

2、学习了仿真的程序调试、跟踪代码技巧,对寄存器、RAM、端口中数据的查看、修改。

后记:

1、本节课很枯燥,内容很多,但有规律。知道指令大概后可以查手册。

2、将MCU的逻辑结构与指令结合起来能更好的理解MCU的运行,指令与MCU物理结构是严格对应的。

2025年10月25日。

学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 3 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡9

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

笔记:

1、位操作指令。
截图202510251809265587.jpg
指令操作支持位寻址的存储空间,主要包括字节地址20H-2FH的RAM单元以及低四位地址为0或8的SFR。指令具体如下:
指令        作用
MOV C,bit        ;将bit位的内容送到进位标志位C中
MOV bit,C        ;将进位标志位C中的内容送到bit位
CLR C              ;清零C
CLR bit            ;清零一个bit位
CPL C              ;取反C
CPL bit            ;取反一个bit位
SETB C            ;置1C
SETB bit          ;置1一个bit位
ANL C,bit         ;直接寻址位与C与,结果保存在C中
ANL C,/bit        ;直接寻址位的反与C与,结果保存在C中不影响bit的值
ORL C,bit         ;直接寻址位与或,结果保存在C中
ORL C,bit         ;直接寻址位的反与C或,结果保存在C中不影响bit的值
JC rel              ;C为1则跳转
JNC rel            ;C为0则跳转
JB bit,rel         ;bit为1则跳转
JNB bit,rel       ;bit为0则跳转
JBC bit,rel       ;bit为1则跳转,并将bit清零

2、控制转移类指令。
截图202510251820119021.jpg
实际大多是修改PC指针的值来完成的。指令具体如下:
指令        作用
AJMP addr11              ;2k空间内的无条件绝对跳转指令
SJMP rel                    ;rel是一个补码,该条指令是一个无条件相对跳转指令
LJMP addr16              ;64k空间无条件绝对跳转指令
JMP @A+DPTR          ;基质加变址绝对跳转指令
JZ rel                        ;判断累加器A的值,为0则执行相对跳转
JNZ rel                      ;判断累加器A的值,非0则执行相对跳转
CJNE A,direct,rel         ;不相等相对跳转指令,A大于direct空间的值则置位Cy
CJNE A,#data,rel        ;不相等相对跳转指令,A大于#data则置位Cy
CJNE Rn,#data,rel      ;不相等相对跳转指令,Rn的值大于#data则置位Cy
CJNE @Ri,#data,rel    ;不相等相对跳转指令,Ri间接寻址的值大于#data则置位Cy
DJNZ Rn,rel               ;减1不为0相对跳转指令,Rn执行完后会减1
DJNZ direct,rel           ;减1不为0相对跳转指令,direct单元内容会减1
ACALL addr11            ;与AJMP类似,不过会将PC压入堆栈
LCALL addr16            ;长调用指令,PC+3后压入堆栈,实际就是将这条指令的下一条指令的地址压入了堆栈,先低字节后高字节,SP+2
RET                          ;SP-2,堆栈的内容弹到PC中,先高后低
RETI                         ;与RET差不多,用在中断服务程序中,会清除中断优先触发器
NOP                          ;空操作,PC+1,无其他操作

学习心得:

1、高级语言中的判断、循环、函数调用底层是控制转移指令完成的。

2、位操作是MCU最小的数据操作,关系到功能的设置,系统、I/O口的状态以及程序走向。

3、语句在仿真中实际操作一下更直观。

总结:

1、学习了位操作和控制流转类指令。

后记:

1、本节课程比较枯燥,需要练习和记忆,以后用到时也可以查手册。

2025年10月25日。

学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 3 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡10

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

笔记:

1、汇编语言程序设计的一般步骤和基本框架。
截图202510251850051874.jpg
1.1 汇编语言程序员设计的一般步骤。
截图202510251848182453.jpg
1.2 汇编语言程序的框架。
STC8H8K64U的中断向量一定要查手册确定地址。程序框架如下:
/*
本汇编语言程序框架由山东大学陈桂友整理
*/
$NOMOD51
$INCLUDE (STC8H.H)     ;包含STC8H8K64U单片机寄存器定义头文件
//===================================================
;这里可以编写程序中用到的一些符号定义(使用EQU、DATA、BIT等伪指令)
        ORG                0000H
        LJMP        MAIN                        ;跳转到主程序
        ORG                0003H
        LJMP        INT0_ISR                  ;外部中断0入口
        ORG                000BH
        LJMP        T0_ISR                     ;定时器0中断入口
        ORG                0013H
        LJMP        INT1_ISR                  ;外部中断1入口
        ORG                001BH
        LJMP        T1_ISR                     ;定时器1中断入口
        ORG                0023H
        LJMP        UART1_ISR               ;串口1中断入口
        ;......其他中断入口
//------------------------------------------------------------------------------------------------------
        ORG        0200H
MAIN:
        MOV                SP,#80H            ;设置堆栈指针(可根据实际情况进行修改)
        ;初始化内存区域内容
        ;设置有关特殊功能寄存器(SFR)的控制字
        ;根据需要开放相应的中断控制
MAINLOOP:                                      ;主程序循环
        ;这里放主循环内的代码
        ;......
        LJMP        MAINLOOP
//===================================================
;下面是各个中断服务子程序
INT0_ISR:                                        ;外部中断0中断服务子程序
        ;根据需要填入处理代码,若没有处理代码,可使用后面的一条语句让单片机复位
        MOV        IAP_CONTR,#20H      ;有其他处理程序时,不要使用该语句
        RETI
T0_ISR:                                           ;定时器0中断服务子程序
        ;根据需要填入处理代码,若没有处理代码,可使用后面的一条语句让单片机复位
        MOV        IAP_CONTR,#20H      ;有其他处理程序时,不要使用该语句
        RETI
INT1_ISR:                                        ;外部中断1中断服务子程序
        ;根据需要填入处理代码,若没有处理代码,可使用后面的一条语句让单片机复位
        MOV        IAP_CONTR,#20H      ;有其他处理程序时,不要使用该语句
        RETI
T1_ISR:                                           ;定时器1中断服务子程序
        ;根据需要填入处理代码,若没有处理代码,可使用后面的一条语句让单片机复位
        MOV        IAP_CONTR,#20H      ;有其他处理程序时,不要使用该语句
        RETI
UART1_ISR:                                     ;串口1中断服务子程序
        ;根据需要填入处理代码,若没有处理代码,可使用后面的一条语句让单片机复位
        MOV        IAP_CONTR,#20H      ;有其他处理程序时,不要使用该语句
        RETI
;......其它中断服务子程序
//------------------------------------------------------------------------------------------------------
;下面可以编写其他子程序或者定义程序中所用的常数               
        
        END
1.3 程序流程图。
截图202510251929443266.jpg
截图202510251954118895.jpg

2、典型汇编语言程序设计举例。
截图202510251931066300.jpg
截图202510251932292091.jpg
截图202510252005386151.jpg
截图202510251935157666.jpg
截图202510252006491382.jpg
截图202510251936222414.jpg
截图202510252015271655.jpg
截图202510251939482967.jpg
截图202510251942159849.jpg
截图202510251943164790.jpg
截图202510251951237593.jpg
截图202510252009013091.jpg
截图202510252010161953.jpg

学习心得:

1、开发理清思路,画出流程图,然后匹配对应的指令序列。

2、需要积累一些完成特定功能的代码模块,能提高开发效率。

3、有些代码技巧需要积累,能使代码更简洁高效。

总结:

1、学习了汇编语言程序设计的一般步骤。

2、学习了汇编语言程序的框架。

3、了解了流程图。

4、学习了几个汇编语言程序实例,很有技巧。

后记:

1、本次课程汇编语言程序框架对以后用汇编语言开发很有用,可当模板使用。

2、后面的实例很有技巧性,需要多学习,多实践积累经验。

2025年10月25日。

学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 3 天前 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡11

第十一集:单片机C语言程序设计导入一

笔记:

1、C51对ANSI C的扩展。
1.1 C51扩展的关键字。
截图202510252035448268.jpg
(1)变量或数据类型。
截图202510252238549123.jpg
截图202510252239301231.jpg
截图202510252247338751.jpg
截图202510252248168380.jpg
(2)内存区域的指定。
截图202510252250412045.jpg
截图202510252252352497.jpg
(3)KEIL C51指针。
截图202510252255151135.jpg
截图202510252256032219.jpg
(4)C51对函数的扩展。
截图202510252257476490.jpg
截图202510252259211489.jpg

2、单片机C语言程序中的常用运算。
2.1 关系运算符。
截图202510252302114692.jpg
2.2 逻辑运算符。
截图202510252302485307.jpg
2.3 位运算符。
截图202510252303292989.jpg
截图202510252304338690.jpg
截图202510252305216777.jpg

3、STC8H8K64U单片机C51程序框架。
//引入需要的头文件,STC8H8K64U需要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 INT0_ISR(void) interrupt INT0_VECTOR    //外部中断0服务子函数
{
//根据需要填入程序代码
}
/*
省略部分中断函数实现
*/
void INT4_ISR(void) interrupt INT4_VECTOR    //外部中断4服务子函数
{
//根据需要填入程序代码
}
void T0_ISR(void) interrupt T0_VECTOR    //定时器0中断服务子函数
{
//根据需要填入程序代码
}
/*
省略部分中断函数实现
*/
void T4_ISR(void) interrupt T4_VECTOR    //定时器4中断服务子函数
{
//根据需要填入程序代码
}
void UART1_ISR(void) interrupt UART1_VECTOR    //串囗1中断服务子函数
{
//根据需要填入程序代码,注意扩展中断的服务函数中手动将中断请求标志的清0
}
void UART2_ISR (void) interrupt UART2_VECTOR    //串口2中断子函数
{
//根据需要填入程序代码,注意扩展中断的服务函数中手动将中断请求标志的清0
}
/*
省略部分中断函数实现
*/

学习心得:

1、C51对ANSI C的扩展使开发更方便控制程序变量的存储、使用方法;方便函数及中断函数的开发;方便位的操作;等等。

2、C51程序框架作为模板,能清晰代码各个功能块,规范代码规范,提高编码效率。

总结:

1、学习了C51对ANSI C的扩展,包括以下19个扩展关键字:_at_、sbit、sfr、bit、sfr16、idata、bdata、xdata、pdata、data、code、alien、small、compact、 large、using、reentrant、interrupt、_task_。

2、学习了变量的数据类型、内存区域的指定、C51指针、C51对函数的扩展。

3、学习了关系运算符、逻辑运算符、位运算符的使用。

4、学习了C51程序框架。

后记:

1、本次课程不算难,都是需要记住的内容。

2、C51程序框架还需要不断打磨。

2025年10月25日。


学习MCU
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-10-28 00:30:37
已绑定手机

17

主题

154

回帖

1292

积分

金牌会员

积分
1292
发表于 前天 00:36 | 显示全部楼层
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡12

第十二集:单片机C语言程序设计导入二

笔记:

1、单片机的C语言程序设计实例。
1.1 通过延时函数,实现方波,控制LED灯闪烁。
截图202510260020502440.jpg
截图202510260021436778.jpg
在实例的基础上通过简单修改实现了流水灯。
截图202510260044371162.jpg
1.2 单片机Flash作为EEPROM使用的基本操作。
EEPROM相关知识。
截图202510260100441384.jpg
截图202510260101301005.jpg
截图202510260103215866.jpg
在STC-ISP工具中设置EEPROM。
截图202510260107176027.jpg
注意事项。
截图202510260134353771.jpg
代码实现。
截图202510260135577470.jpg
截图202510260140407081.jpg
截图202510260137032316.jpg
截图202510260137449469.jpg
截图202510260139059386.jpg

学习心得:

1、多利用STC提供的工具,生成部分代码。

2、现在AiCude工具能图形化设置,并生成程序框架。

3、注意代码细节,如何更容易理解。

总结:

1、通过实例,学习了C语言程序设计的过程。

2、学习了STC公具提供的生成代码的功能。

3、复习了仿真过程需要的操作,学习了在跟踪程序时如何观察变量变化。

后记:

1、本节课程实际动手编程,实际操作经验性的内容比较好。

2、养成遇到问题习惯性查手册,利用STC软件工具。

2025年10月26日。

学习MCU
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-28 02:31 , Processed in 0.143892 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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