欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求大神幫忙給這個程序加一下注釋啊
[打印本頁]
作者:
THISISME
時間:
2019-1-7 21:43
標題:
求大神幫忙給這個程序加一下注釋啊
本帖最后由 THISISME 于 2019-1-7 21:45 編輯
這是一個時鐘的程序,是別人編的,本人學生黨,再練習讀程序加自己編寫中,但是不是很能讀懂,尤其是主程序和中斷服務程序那部分,想把這個程序當做一個典型例子學習,希望有大佬可以給它從主程序開始寫個注釋(越詳細越好),非常感謝
程序如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0INT0
ORG 0013H
LJMP INT1INT1
ORG 000BH
LJMP IT0P
ORG 0040H
BEEP EQU P3.4 ;speaker
/**************主程序*******************/
MAIN:MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV 30H,#14H
MOV 40H,#00H
MOV 41H,#00H
MOV 42H,#00H
MOV TCON,#05H
MOV TMOD,#01H
MOV IE,#87H
MOV IP,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
LOOP: LCALL DISPLAYSECOND
LCALL DISPLAYMINUTE
LCALL DISPLAYHOUR
SECOND0:JNB P2.0,SECOND£
MINUTE0:JNB P2.1,MINUTE
HOUR0: JNB P2.2,HOUR
CLEAR0: JNB P2.3,CLEAR
LAST: LJMP LOOP
/**************秒調整*******************/
SECOND: LCALL DELAY100MS
JNB P2.0,HAVES
LCALL DELAY10MS;·À¶¶
LJMP RETURNS
HAVES: MOV A,#01H
ADD A,42H
DA A
MOV 42H,A
CJNE A,#60H,RETURNS
MOV 42H,#00H
RETURNS:LCALL DISPLAYSECOND
LJMP MINUTE0
/**************分調整*******************/
MINUTE: LCALL DELAY100MS
JNB P2.1,HAVEM
LCALL DELAY10MS
LJMP RETURNM
HAVEM: MOV A,#01H
ADD A,41H
DA A
MOV 41H,A
CJNE A,#60H,RETURNM
MOV 41H,#00H
RETURNM:LCALL DISPLAYMINUTE
LJMP HOUR0
/**************時調整*******************/
HOUR: LCALL DELAY100MS
JNB P2.2,HAVEH
LCALL DELAY10MS
LJMP RETURNH
HAVEH: MOV A,#01H
ADD A,40H
DA A
MOV 40H,A
CJNE A,#24H,RETURNH
MOV 40H,#00H
RETURNH:LCALL DISPLAYHOUR
LJMP CLEAR0
/**************清零*******************/
CLEAR: LCALL DELAY100MS
JNB P2.3,HAVEC
LJMP RETURNC
HAVEC: CLR TR0
MOV 40H,#00H
MOV 41H,#00H
MOV 42H,#00H
CLR BEEP;speaker ring
LCALL DL1S
SETB BEEP
RETURNC:LJMP LAST
/**************秒顯示*******************/
DISPLAYSECOND:
SECONDGE: SETB P1.0
MOV A,42H
ANL A,#0FH
LCALL SEG
LCALL DELAY1MS
CLR P1.0
SECONDSHI:SETB P1.1
MOV A,42H
SWAP A
ANL A,#0FH
LCALL SEG
LCALL DELAY1MS
CLR P1.1
RET
/**************·分顯示*******************/
DISPLAYMINUTE:
MINUTEGE: SETB P1.2
MOV A,41H
ANL A,#0FH
LCALL SEG
LCALL DELAY1MS
CLR P1.2
MINUTESHI:SETB P1.3
MOV A,41H
SWAP A
ANL A,#0FH
LCALL SEG
LCALL DELAY1MS
CLR P1.3
RET
/**************時顯示*******************/
DISPLAYHOUR:
HOURGE: SETB P1.4
MOV A,40H
ANL A,#0FH
LCALL SEG
LCALL DELAY1MS
CLR P1.4
HOURSHI: SETB P1.5
MOV A,40H
SWAP A
ANL A,#0FH
LCALL SEG
LCALL DELAY1MS
CLR P1.5
RET
/**************啟動int0終端服務*******************/
INT0INT0:CLR EA
LCALL DELAY10MS
JNB INT0,HAVEKEY1
SETB EA
RETI
HAVEKEY1:PUSH PSW
PUSH Acc
SETB EA
SETB TR0
CLR EA
POP Acc
POP PSW
SETB EA
RETI
/************暫停int1終端服務*******************/
INT1INT1:CLR EA
LCALL DELAY10MS
JNB INT1,HAVEKEY2
SETB EA
RETI
HAVEKEY2:PUSH PSW
PUSH Acc
SETB EA
CLR TR0
CLR EA
POP Acc
POP PSW
SETB EA
RETI
/*****************定時器0中斷服務*****************/
IT0P:PUSH PSW
PUSH Acc
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ 30H,RETURN
MOV 30H,#14H
MOV A,#01H
ADD A,42H
DA A
MOV 42H,A
CJNE A,#60H,RETURN
MOV 42H,#00H
MOV A,#01H
ADD A,41H
DA A
MOV 41H,A
CJNE A,#60H,RETURN
MOV 41H,#00H
MOV A,#01H
ADD A,40H
DA A
MOV 40H,A
CJNE A,#24H,RETURN
MOV 40H,#00H
RETURN:
SETB TR0
POP Acc
POP PSW
RETI
/*************查表***************/
SEG:MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL A
MOV P0,A
RET
TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
/*************1mS*****************/
DELAY1MS:MOV R7,#04H
D1: MOV R6,#7DH
DJNZ R6,$
DJNZ R7,D1
RET
/*************10ms****************/
DELAY10MS:MOV R7,#28H
D2: MOV R6,#7DH
DJNZ R6,$
DJNZ R7,D2
RET
/*************100mS****************/
DELAY100MS:MOV R7,#02H
DEL1:MOV R6,#0C8H
DEL2:MOV R5,#7DH
DEL3:DJNZ R5,DEL3
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
/***********蜂鳴器延時************/
DL1S: MOV R4, #10
DL3: LCALL DELAY10MS
DJNZ R4, DL3
RET
END
作者:
ssz666
時間:
2019-1-12 12:07
現在基本都用C語言編程了,不用這些匯編語言,樓主如果會C語言的話可以嘗試下C語言編程
作者:
Y_G_G
時間:
2019-1-12 21:00
這個沒有人能幫你寫注釋的,不是有多難,而是太簡單卻很大量,匯編和C不同,它是一條一條指令的執行下去的,光是一條指令是看不出什么的.
如果你要知道某個子程序是有什么用的.那就看著8051指令,一條一條的在后面加上去,當你加一個子程序的注釋了,你也就知道這個子程序是有什么用的了
不要覺得你對著這幾百行代碼,大概看一下你就能知道個大概,那是不可能的了
舉一個例子:
DELAY10MS: MOV R7,#28H ;把16進制數28H放到R7
D2: MOV R6,#7DH ;把16進制數7DH放到R6
DJNZ R6,$ ;R6減去1,不為0就再跳到當前指令(地址)
DJNZ R7,D2 ;R7減去1,不為0就再跳到D2(地址)
RET
這個子程序就完成了一個延時的功能:R6不斷的減去1,只要不為0就一直減下去,最后一步為0 了就跳到下一條指令,R7不斷的減去1,只要不為0,就去D2,再給R6賦值7DH,再去減1,直到R7也減到了0,子程序就返回了,通過不斷的執行指令在達到一個延時的效果
作者:
zjjhtony
時間:
2019-1-13 10:52
個人認為匯編的程序每一句注釋意義不大,不如畫個程序框圖。
1)畫個框圖,搞懂程序結構。
2)搞懂每個程序的實現方法,入口數據,出口數據等等。
比如知道每個詞語的意思,還是不能寫出好的文章。必須知道文章的結構,目的,選用的手法等等。
初學者先看懂人家的程序意思。分析子程序的意思。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1