导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→关于中断、堆栈的一些问题,请各位大虾不吝赐教!菜鸟在这里先谢[guest]

 *第30082篇: 关于中断、堆栈的一些问题,请各位大虾不吝赐教!菜鸟在这里先谢了!(详细见内)

  
楼 主:guest 2005年3月9日14:49
 关于中断、堆栈的一些问题,请各位大虾不吝赐教!菜鸟在这里先谢了!(详细见内)
(01)  ORG 0000H
(02)  AJMP START
(03)  ORG 000BH 
(04)  AJMP TIME0
(05)  ORG 30H
(06)  START:
(07)  MOV P1, #0FFH 
(08)  MOV 30H, #00H 
(09)  MOV TMOD, #00000001B 
(10)  MOV TH0, #3CH 
(11)  MOV TL0, #0B0H 
(12)  SETB EA
(13)  SETB ET0
(14)  SETB TR0
(15)  LOOP: AJMP LOOP
(16)  TIME0: 
(17)  PUSH ACC
(18)  PUSH PSW 
(19)  INC 30H
(20)  MOV A, 30H
(21)  CJNE A, #20,T_RET
(22)  T_L1: CPL P1.0
(30)  MOV 30H, #0
(24)  T_RET:
(25)  MOV TH0, #15H
(26)  MOV TL0, #9FH
(27)  POP PSW
(28)  POP ACC
(29)  RETI
(30)  END

请问:这个程序有没有问题?有堆栈的问题吗??我看的很不顺眼,但是找不到错误的地方,能帮我指出吗??

还有就是,当程序执行时,01→02,跳转到06处标记的地方再执行。这样05处的ORG 30H这句程序不是永远也执行不到吗?不就是没有意义吗?

另一个问题,程序在执行15处LOOP: AJMP LOOP时如果发生中断,则到03处进入中断程序,然后再返回,此时还是返回15处继续执行这个程序吗??

假如加上这句:mov sp,#5fh是不是PUSH、POP都是以5FH为起始地址的??

谢谢了,请不吝赐教!

  
2楼:edawn 2005年3月9日17:05
 有!
1。堆栈地址现为:sp=07h
2.org 30h 是一条伪指令,是用来设定程序或数据存储区的起始地址的!
3。只要没停就来。
4。是的

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:单片及抗干扰问题

[下一篇主题]:求助 有关 PCI 扩展转接卡!!