小白学习 发表于 2026-8-11 22:30

单片机程序存储器61K,刚开始不明白,现在通过软件来验证是否是61K

本帖最后由 小白学习 于 2026-8-11 22:35 编辑

刚接触单片机在学校,上课听得云里雾里,印象最深刻的是某某单片机的程序存储器多少K,一直不明白这个,后面工作自学单片机不断了解这里的多少K,今天来讲讲我的理解







方案1:通过写很多代码去堆积代码量占用到61K
方案2:只写一条功能代码,把代码放在容量的末尾,装入代码后容量刚好满61K或多或少
我用的方案2,一下是我的代码






;=========================
; 使用外部中断0来这段代码来演示单片机程序存储器大小
; 芯片:STC90C516RD+ (61K=62464)
; 功能:P3.2(INT0)下降沿触发中断,每次中断翻转P0.0电平(我开发板P0.0接的LED阴级,有电平翻转就会亮灭)
;=========================
;interrupt vector table       ; 中断向量表区域
ORG 0000H                  ; 让PC内容为0000H,CP相当于CPU导航,告诉CPU从0000H位置去干活
LJMP MAIN                  ; 长跳转到主程序,避开下方中断向量地址
ORG 0003H                  ; 外部中断0(INT0)中断向量地址固定0003H
LJMP EXINT0                  ; 若发生INT0中断时,则跳转到中断服务函数
;-----------------------------------------
ORG 0F3F2H                   ; 主程序存放起始地址0F3F2H,61K程序存储器内存地址是0000H-F3FFH,这里把代码几乎放到容量的末尾了,方便验证容量是否为61K
MAIN:                         ; ;;主函数在程序存储器只用了14个字节,所以这是为什么从0FF0H开始存放,因为这样刚好存满62464个字节(61K)

MOV SP, #7FH               ; 设置堆栈指针SP=7FH
                              ; 51默认SP=07H,和寄存器组重叠;设置7FH,堆栈从80H开始,防止覆盖通用RAM
SETB IT0                     ; IT0=1:外部中断0触发方式,下降沿触发
                              ; IT0=0为低电平触发
SETB EX0                     ; EX0=1:使能外部中断0(允许INT0中断)
SETB EA                      ; EA=1:开启CPU全局总中断开关
SJMP $                     ; 原地无限循环,等待中断触发(主程序空转)
;-----------------------------------------
;External interrupt0 service routine; 外部中断0中断服务子程序
EXINT0:
CPL P0.0                      ; P0.0引脚电平取反:高变低 / 低变高
RETI                         ; 中断返回指令,回到被打断的SJMP $处继续运行
;-----------------------------------------
END                        ; 汇编源代码结束标记





把代码不断调整到容量末尾位置,从ORG 0F3F1H开始装代码时候,P3.2接的按键只要有被按下,P0.0的灯就会亮,再按下就灭~~~


从ORG 0F3F2H开始装代码时候,P3.2接的按键只要有被按下,P0.0的灯就会亮,再按下就灭~~~(现象同上)



从ORG 0F3F3H开始装代码时候,P3.2接的按键被按下,P0.0的灯虽然能亮,但是松开按键就灭了,按一下亮一下,一直按着一直亮,而且P2.0\P2.1\P2.2这三个口接的LED也有轻微点亮的痕迹(开始出现功能不正常了)



从ORG 0F3F4H开始装代码的时候,P3.2接的按键被按下,没有任何反应,由此可知在ORG 0F3F2H时候,代码刚好装满62464个字节就是61K











补充内容 (2026-8-18 21:49):
ORG 0000H相当于告诉编译器从0000H位置开始存放代码,Keil自动默认也是从0000H开始装代码,所以在Keil不要ORG 0000H也能用

bidezhi7777 发表于 2026-8-12 07:17

cy19840 发表于 2026-8-12 08:24

高手汇编写的

mcufan 发表于 2026-8-12 08:25

790 发表于 2026-8-12 08:56

1076383223 发表于 2026-8-12 09:27

好帖,顶一个!

zhangzuo 发表于 2026-8-12 09:28

学习了,非常好

江波波 发表于 2026-8-12 11:49

学习

竹青 发表于 2026-8-12 12:41

感谢分享

AIY 发表于 2026-8-12 23:48

感谢分享
页: [1] 2 3 4
查看完整版本: 单片机程序存储器61K,刚开始不明白,现在通过软件来验证是否是61K