你的錯誤代碼是 error c129: 這是一個C語言方面的語法錯誤,說明你的文件被保存為C文件(文件名為.c后綴)。
我用你這段程序放在keil編譯器中試驗過,當程序保存為c文件并編譯時,會出現如你所示的error c129的錯誤且指向程序的第一句代碼處;若將文件另存為匯編文件(文件名為.asm后綴)再進行編譯,則不會出現c129的報錯。
現在將這段程序保存為.asm文件,并將程序整理為以下形式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
ORG 0000H
LJMP START
ORG 000BH ;
LJMP INTT0;
START: MOV R0,#70H
MOV R7,#0CH
INIT: MOV @R0,#00H
INC R0
DJNZ R7,INIT
MOV 72H,#10
MOV 75H,#10
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#03CH
SETB EA
SETB ET0
SETB TR0
START1: LCALL SCAN
LCALL KEYSCAN
SJMP START1;
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET;
DL20MS:
對于以上程序段,不知道整理出來之后是否與你的原代碼相同,但其中有一點需要說明,匯編文件中的分號“ ; ” 的作用與C文件中的“ // ”作用類似,它后面緊跟的是注釋內容。 你這段程序,若按以上整理,那么所有命令后面的分號“ ; ” 都可以不要的。 不過,也有可能你確實使用了分號的作用,將后面一些命令作了屏蔽處理,則此處不另作說明。
下面將整理后的程序進行編譯,會出現以下報錯情況:
錯誤、警告的解釋:
第4行的錯誤原因是:標志符號“INTT0”沒有定義;
第18行的錯誤原因是:標志符號“SCAN”沒有定義;
第19行的錯誤原因是:標志符號“KEYSCAN”沒有定義;
第27行的警告原因是:代碼結束處沒有“END”命令;(注:所有匯編文件結尾處都應有一句“END”命令表示結束)
可以看得出,你這段程序應該不是完整的,另有一部份你沒有復制出來。你可以根據以上說明,再結合你的實際情況處理你的程序。 祝你成功! |