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

打卡学习记录贴 8H8K64U陈老师教学

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-21 00:11:37 | 显示全部楼层
本帖最后由 mapengji 于 2024-8-21 14:20 编辑

汇编部分又重新看了一遍。 把后面不懂的概念重新理清楚了 。结合下面的资料。已经能看懂 实例程序里面的汇编程序逻辑了。

MCS-51指令系统及汇编程序设计.pdf

996.82 KB, 下载次数: 58

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-21 14:16:24 | 显示全部楼层
本帖最后由 mapengji 于 2024-8-21 14:19 编辑

花时间整理的。如果有理解错误的地方请大神指出
汇编.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-22 12:01:30 | 显示全部楼层
本帖最后由 mapengji 于 2024-8-22 15:00 编辑

陈老师的汇编模版。没有试验箱,没有实际运行。。但是编译能通过。
/////-----------------头文件------------------------------------------------------------------------
$NOMOD51
$INCLUDE (STC8H.H)        ;包含STC8H8K64U单片机寄存器定义头文件
/////---------------------------------------------------------------------------------------------------
//--------------------------中断跳转入口地址----------------------------
//-------------------------------------------------------------------------------
        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                002BH
        LJMP        ADC_ISR                        ;ADC中断服务程序入口
        ORG                0033H
        LJMP        LVD_ISR                        ;低电压检测中断服务程序入口
        ORG                003BH
        LJMP        PCA_ISR                        ;PCA中断服务程序入口   
        ORG                0043H
        LJMP        UART2_ISR                ;串口2中断服务程序入口
        ORG                004BH  
        LJMP        SPI_ISR                        ;SPI中断服务程序入口
        ORG                0053H
        LJMP        INT2_ISR                ;INT2中断服务程序入口
        ORG                005BH
        LJMP        INT3_ISR                ;INT3中断服务程序入口
        ORG                0063H
        LJMP        T2_ISR                        ;定时器2中断服务程序入口        
        ORG                0083H
        LJMP        INT4_ISR                ;INT4中断服务程序入口
        ORG                008BH
        LJMP        UART3_ISR                ;UART3中断服务程序入口
        ORG                0093H
        LJMP        UART4_ISR                ;UART4中断服务程序入口
        ORG                009BH
        LJMP        T3_ISR                        ;T3中断服务程序入口
        ORG                00A3H
        LJMP        T4_ISR                        ;T4中断服务程序入口
        ORG                00ABH
        LJMP        CMP_ISR                        ;比较器中断服务程序入口
        ORG                00C3H
        LJMP        I2C_ISR                ;I2C中断服务程序入口
        ORG                00CBH
        LJMP        USB_ISR                ;USB中断服务程序入口
        ORG                00D3H
        LJMP        PWMA_ISR               ;PWMA中断服务程序入口
        ORG                00DBH
        LJMP        PWMB_ISR               ;PWMB中断服务程序入口
        ORG                011BH
        LJMP        TKSU_ISR               ;触摸按键中断服务程序入口(STC8H8K64U单片机没有该中断)
        ORG                0123H
        LJMP        RTC_ISR               ;RTC中断服务程序入口
        ORG                012BH
        LJMP        P0_ISR               ;P0中断服务程序入口
        ORG                0133H
        LJMP        P1_ISR               ;P1中断服务程序入口
        ORG                013BH
        LJMP        P2_ISR               ;P2中断服务程序入口
        ORG                0143H
        LJMP        P3_ISR               ;P3中断服务程序入口
        ORG                014BH
        LJMP        P4_ISR               ;P4中断服务程序入口
        ORG                0153H
        LJMP        P5_ISR               ;P5中断服务程序入口
        ORG                015BH
        LJMP        P6_ISR               ;P6中断服务程序入口
        ORG                0163H
        LJMP        P7_ISR               ;P7中断服务程序入口
        ORG                017BH
        LJMP        DMA_M2M_ISR     ;DMA_M2M中断服务程序入口        
        ORG                0183H
        LJMP        DMA_ADC_ISR     ;DMA_ADC中断服务程序入口
        ORG                018BH
        LJMP        DMA_SPI_ISR     ;DMA_SPI中断服务程序入口
        ORG                0193H
        LJMP        DMA_UR1T_ISR    ;DMA_UR1T中断服务程序入口
        ORG                019BH
        LJMP        DMA_UR1R_ISR    ;DMA_UR1R中断服务程序入口
        ORG                01A3H
        LJMP        DMA_UR2T_ISR    ;DMA_UR2T中断服务程序入口
        ORG                01ABH
        LJMP        DMA_UR2R_ISR    ;DMA_UR2R中断服务程序入口
        ORG                01B3H
        LJMP        DMA_UR3T_ISR    ;DMA_UR3T中断服务程序入口
        ORG                01BBH
        LJMP        DMA_UR3R_ISR    ;DMA_UR3R中断服务程序入口
        ORG                01C3H
        LJMP        DMA_UR4T_ISR    ;DMA_UR4T中断服务程序入口
        ORG                01CBH
        LJMP        DMA_UR4R_ISR    ;DMA_UR4R中断服务程序入口
        ORG                01D3H
        LJMP        DMA_LCM_ISR     ;DMA_LCM中断服务程序入口
        ORG                01DBH
        LJMP        LCM_ISR             ;LCM中断服务程序入口
    ORG            0200H
               
//-------------------------------------------------------------------------------
//---------------------程序开始------------------------------------
//-------------------------------------------------------------------------------
MAIN:
        MOV                SP,#80H                  ;设置堆栈指针
        ;程序写这里
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
ADC_ISR:                ;ADC中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
LVD_ISR:                ;低电压检测中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
PCA_ISR:                ;PCA中断服务子程序   
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
UART2_ISR:                ;串口2中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
SPI_ISR:                ;SPI中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ;复位
        RETI
INT2_ISR:                ;INT2中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
INT3_ISR:                ;INT3中断服务子程序
        ;加程序;
        MOV        IAP_CONTR,#20H            ;复位
        RETI
T2_ISR:                        ;定时器2中断服务子程序        
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
INT4_ISR:                ;INT4中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
UART3_ISR:                ;UART3中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ;复位
        RETI
UART4_ISR:                ;UART4中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
T3_ISR:                        ;T3中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ; 复位
        RETI
T4_ISR:                        ;T4中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ; 复位
        RETI
CMP_ISR:                ;比较器中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ; 复位
        RETI
I2C_ISR:               ;I2C中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ; 复位
        RETI
USB_ISR:               ;USB中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
PWMA_ISR:              ;PWMA中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H            ;复位
        RETI
PWMB_ISR:              ;PWMB中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
TKSU_ISR:              ;触摸按键中断服务子程序(STC8H8K64U单片机没有该中断)
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
RTC_ISR:              ;RTC中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P0_ISR:               ;P0中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P1_ISR:               ;P1中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P2_ISR:               ;P2中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P3_ISR:               ;P3中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P4_ISR:               ;P4中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P5_ISR:               ;P5中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
P6_ISR:               ;P6中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
P7_ISR:               ;P7中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_M2M_ISR:    ;DMA_M2M中断服务子程序        
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_ADC_ISR:    ;DMA_ADC中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
DMA_SPI_ISR:    ;DMA_SPI中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR1T_ISR:   ;DMA_UR1T中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR1R_ISR:   ;DMA_UR1R中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR2T_ISR:   ;DMA_UR2T中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR2R_ISR:   ;DMA_UR2R中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR3T_ISR:   ;DMA_UR3T中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
DMA_UR3R_ISR:   ;DMA_UR3R中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR4T_ISR:   ;DMA_UR4T中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H              ;复位
        RETI
DMA_UR4R_ISR:   ;DMA_UR4R中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
DMA_LCM_ISR:    ;DMA_LCM中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
LCM_ISR:             ;LCM中断服务子程序
        ;加程序
        MOV        IAP_CONTR,#20H             ;复位
        RETI
//-------------------------------------------------------------------------------        
//--------自己写的子程序------------------
//-------------------------------------------------------------------------------
        
        
        
        
        
        END;程序结束,
        
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-22 15:01:35 | 显示全部楼层
第十一集  
C51 扩展关键词  _at_ , sbit, sfr, bit, sfr16,idata,bdata,xdata,pdata,code,alien,small,compact,large,reentrant,interrupt,_task_.
C51 支持数据类型。bit* 位数1位   字节 1/8     取值范围     0或1,sbit* 位数1位    字节 1/8      取值范围 0~1 ,sfr* 位数8位        字节 1     取值范围  0x80-0xff,
sfr16* 位数16位    字节 2    取值范围  0x80~0xff,(占2个连续字节)
指针很重要。内部储存空间   以后不能用Pdata,    volatile  --不要进行优化编译。关系运算。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-09-12 20:44:49

2

主题

64

回帖

358

积分

中级会员

积分
358
发表于 2024-8-22 15:37:09 | 显示全部楼层
这个老师讲的不错   但是汇编学了感觉没啥用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-22 16:15:53 | 显示全部楼层
第十二集   分析了一个流水灯实例,    分析了EEPROM的程序,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-22 16:19:45 | 显示全部楼层
qike*** 发表于 2024-8-22 15:37
这个老师讲的不错   但是汇编学了感觉没啥用

虽然我们现在不用汇编语言编程,但是可以帮助理解单片机内部结构。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-23 12:26:27 | 显示全部楼层
本帖最后由 mapengji 于 2024-8-23 12:30 编辑

第十三 十四 集 中断。以前也听过其他老师讲过中断。看程序设置中断的时候 总是分不清什么时候设置 那个寄存器。陈老师分析了 下面的图以后才彻底明白,
中断优先级.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-02-20 07:20:20

1

主题

24

回帖

233

积分

中级会员

积分
233
发表于 2024-8-23 12:28:55 | 显示全部楼层
本帖最后由 mapengji 于 2024-8-23 12:43 编辑

还有一个 就是 操作寄存器的时候 ,经常看到。有些可以位操作。有的就不行。现在才明白。寄存器地址能被8整除的才可以。


中断 优先级
1.不同级的中断源同时申请中断时,先高后低;(就是上图的顺序。从高到底。)
2.处理低级中断又收到高级中断请求时,停低转高;
3.处理高级中断却收到低级中断请求时,高不睬低;
4.同一级的中断源同时申请中断时,事先规定。

中断不响应
1,中断允许总控制位EA=0或发出中断请求的中断所对应的中断允许控制位为0。
2.CPU正在执行一个同级或高一级的中断服务程序。
3.当前执行的机器周期不是指令周期的最后一个机器周期。
4.正在执行的指令是中断返回指令RETI或者是访问专用寄存器IE或IP的指令时,CPU至少要再执行一条指令才能响应中断请求。

中断标志位清除-----中断被CPU响应后。清除标志位,不然cpu进入中断请求死循环,
1,硬件自动
2.软件手动清除

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-05-07 18:17:53

13

主题

164

回帖

375

积分

中级会员

积分
375
发表于 2024-8-23 13:44:14 | 显示全部楼层
mape*** 发表于 2024-8-16 23:06
笔记整理。 汇编语言的指令通常由操作码和操作数组成,  操作码指出的是要对操作数进行什么操作。操作数指 ...

好家伙一点看不懂
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 09:26 , Processed in 0.195314 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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