標題: 求助:請幫忙分析一下程序 [打印本頁]
作者: phevos 時間: 2009-4-21 23:55
標題: 求助:請幫忙分析一下程序
ORG 0000H ;程序功能平時8個LED閃爍,外中斷0時左移流水燈3次
LJMP MAIN
ORG 0003H
LJMP EXT0
ORG 0030H
MAIN: MOV IE,#81H
CLR IT0
MOV SP,#70H
START: MOV P1,#0FFH
LCALL DELAY
MOV P1,#00H
LCALL DELAY
LJMP START
EXT0: PUSH ACC
PUSH PSW
CLR RS0 ;更換工作寄存器組
SETB RS1
MOV R1,#3
LOOP: MOV A,#0FEH
LOOP1: MOV P1,A
LCALL DELAY
RL A
CJNE A,#0FEH,LOOP1
DJNZ R1,LOOP
POP ACC
POP PSW
RETI
DELAY: MOV R5,#2
L1: MOV R6,#0
L2: MOV R7,#0
DJNZ R7,$
DJNZ R6,L2
DJNZ R5,L1
RET
END
這個程序不明白為什么要在外部中斷中更換工作寄存器組(R0~R7)。
如果不更換的話滿足不了功能要求,加上就好了。
可是怎么都分析不出來,望高人解答!!
作者: xushiming 時間: 2009-4-22 23:48
中斷有調用delay子程序,執(zhí)行中斷程序之后,R5,R6,R7全部被清0,中斷若從delay程序里面產(chǎn)生,返回后R6,R7在延時程序的內循環(huán)里,R6,R7賦值為0,產(chǎn)生的延時同設置為255等同(只相差2個循環(huán)周期),而R5清零之后產(chǎn)生的效果共R6=2相比則相差128倍了,故程序返回之后的第一次延時會很長,之后便正常了。更換寄存器組,中斷時不改變原有的值,中斷返回之前pop psw指令又將寄存器組調回使用了。
解釋有點啰嗦。
作者: chzfmx 時間: 2009-4-23 00:09
不對啊,即使加上 CLR RS0 ;更換工作寄存器組
SETB RS1 , 外中斷0時左移流水燈大部分時候是3次,但不是恒定的3次,我也沒想得通是哪里的問題,另外你既然用的是電平觸發(fā)方式(CLR IT0),在中斷返回前要撤除/INT0的低電平的,同樣希望有哪個高手指點,感激……
作者: phevos 時間: 2009-4-23 16:32
以下是引用xushiming在2009-4-22 23:48:08的發(fā)言:
中斷有調用delay子程序,執(zhí)行中斷程序之后,R5,R6,R7全部被清0,中斷若從delay程序里面產(chǎn)生,返回后R6,R7在延時程序的內循環(huán)里,R6,R7賦值為0,產(chǎn)生的延時同設置為255等同(只相差2個循環(huán)周期),而R5清零之后產(chǎn)生的效果共R6=2相比則相差128倍了,故程序返回之后的第一次延時會很長,之后便正常了。更換寄存器組,中斷時不改變原有的值,中斷返回之前pop psw指令又將寄存器組調回使用了。
解釋有點啰嗦。
很明白的解釋,真是高人阿,謝謝咯!
作者: lixiaol03 時間: 2009-4-24 21:08
呵呵,學會了一點,又進步了一下,謝謝。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
精品久久久久久久久久久院品网
|
91精品免费
|
国产精品欧美大片
|
国产电影一区二区
|
国产精品久久久久久久久久久久久
|
最新中文字幕一区
|
国产高清精品在线
|
美女久久久久久久
|
中文字幕在线观看
|
欧美视频一级
|
色就是色欧美
|
国产 日韩 欧美 中文 在线播放
|
亚洲一视频
|
国产成人一区二区三区电影
|
亚洲bt 欧美bt 日本bt
|
人和拘一级毛片c
|
亚洲成人中文字幕
|
久久久久精
|
亚洲有码转帖
|
国产成人精品999在线观看
|
国产免费视频在线
|
欧美日韩黄色一级片
|
中文字幕在线观看一区二区
|
一区二区在线不卡
|
亚洲综合99
|
午夜精品久久久久久久久久久久久
|
久久久福利
|
日本在线视频一区二区
|
日韩国产一区二区三区
|
日本免费一区二区三区四区
|
欧美日韩精品区
|
国产福利在线播放麻豆
|
中文字幕二区
|
日韩精品久久久久
|
www.黄色片视频
|
欧美亚洲视频在线观看
|
97久久久久久久久
|
国产又爽又黄的视频
|
国产精品av久久久久久久久久
|
欧美一区二区三区免费电影
|
国产日韩久久
|