急求c51单片机汇编语言程序错误更改,用的keil软件不能生成hex文件,不能导入proteus 30

程序是文哭里的,有错误,高手给改改发个邮箱吧1025922538@qq.com味苦地址:http://wenku.baidu.com/view/3da6b928647d2... 程序是文哭里的,有错误,高手给改改发个邮箱吧1025922538@qq.com
味苦地址:http://wenku.baidu.com/view/3da6b928647d27284b73512b.html
展开
 我来答
zhxiufan
2012-10-18 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38375
国家科技进步奖

向TA提问 私信TA
展开全部
K1 BIT P1.0
K2 BIT P1.1
K3 BIT P1.2
K4 BIT P1.3
K5 BIT P1.4
K6 BIT P1.5
K7 BIT P1.6
K8 BIT P1.7
MIN EQU 30H
SEC EQU 31H
SEC100 EQU 32H
DIS_BUF EQU 33H
BUF_MIN_H EQU DIS_BUF
BUF_MIN_L EQU DIS_BUF+1
BUF_SEC_H EQU DIS_BUF+2
BUF_SEC_L EQU DIS_BUF+3
K_OLD EQU 41H
K_NEW EQU 42H
DIS_DIGIT EQU 43H
DIS_INDEX EQU 44H
K_OLD1 EQU 45H
K_NEW1 EQU 46H
FLAG EQU 47H
CONVERT EQU 48H

ORG 0000H
JMP MAIN
ORG 0003H
LJMP INT_0
ORG 0000BH
LJMP TIMER0
ORG 0001BH
LJMP TIMER1

ORG 0030H
MAIN:
MOV SP,#60H
MOV P0,#0FFH
MOV P2,#0FFH
MOV TMOD,#011H
MOV TH0,#0FCH
MOV TL0,#017H
MOV TH1,#0DCH
CLR A
MOV TL1,A
MOV CONVERT,#00H
MOV CONVERT+1 ,#00H
MOV CONVERT+2,#00H
MOV CONVERT+3 ,#00H
CLR A
MOV MIN,#20
MOV SEC,A
MOV SEC100,A
MOV BUF_MIN_H,#0A4H
MOV BUF_MIN_L,#0C0H
MOV BUF_SEC_H,#0C0H
MOV BUF_SEC_L,#0C0H
MOV DIS_BUF+4,#0C0H
MOV DIS_BUF+5,#0C0H
MOV DIS_BUF+6,#0C0H
MOV DIS_BUF+7,#0C0H
MOV FLAG ,#00H
MOV K_OLD,#00H
BEEP_BL00: MOV R3,#10
MOV R2,#200
MAIN1100:
CPL p3.7
LCALL DELAY500
LCALL DELAY500
DJNZ R2,MAIN1100
CPL p3.6
LCALL DELAY500
LCALL DELAY500
LCALL DELAY500
MOV R2,#200
MAIN2100:
CPL p3.7
LCALL DELAY500
DJNZ R2,MAIN2100
DJNZ R3,MAIN1100
LJMP START
DELAY500:
MOV R7,#230
LOOP1:
DJNZ R7,LOOP1
RET
START: MOV DIS_DIGIT,#0FEH
CLR A
MOV DIS_INDEX,A
SETB EA
SETB ET0
SETB TR0
SETB IT0
SETB EX0
SETB PT0
MAIN_LP:
CALL KEY_PROG
SJMP MAIN_LP
KEY_PROG:
CALL K_SCAN
MOV A,K_NEW
CJNE A,K_OLD,KEY_P1
JMP END_PROC_KEY
KEY_P1:
MOV R4,#15
KEY_P2:
MOV R7,#10
CALL DELAYMS
DJNZ R4,KEY_P2
CALL K_SCAN
MOV A,K_NEW
CJNE A,K_OLD,KEY_P3
JMP END_PROC_KEY
KEY_P3:
JB ACC.0,PROC_K1
JB ACC.1,PROC_K2
JB ACC.2,PROC_K3
JB ACC.3,PROC_K4
LJMP END_PROC_KEY
PROC_K1:LCALL BEEP_BL001
INC MIN
MOV A,MIN ;
CJNE A, #100,UPDATE_MIN21
MOV MIN,#00H
UPDATE_MIN21:
MOV A,MIN
MOV B,#10
DIV AB ; A = MIN / 10
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV BUF_MIN_H,A
MOV A,MIN
MOV B,#10
DIV AB
MOV A,B
MOVC A,@A+DPTR
MOV BUF_MIN_L,A
SJMP END_PROC_KEY
PROC_K2:LCALL BEEP_BL001
DEC MIN
MOV A,MIN
CJNE A, #255, UPDATE_MIN1
MOV MIN,#99
UPDATE_MIN1:
MOV A,MIN
MOV B,#10
DIV AB
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV BUF_MIN_H,A
MOV A,MIN
MOV B,#10
DIV AB
MOV A,B
MOVC A,@A+DPTR
MOV BUF_MIN_L,A
SJMP END_PROC_KEY
PROC_K3: LCALL BEEP_BL001
PUSH PSW
INC FLAG
MOV A ,FLAG
RRC A
JNC STOP
CLR P3.6
SETB ET1
SETB TR1
POP PSW
SJMP END_PROC_KEY
STOP:SETB P3.6
CLR ET1
CLR TR1
POP PSW
SJMP END_PROC_KEY
PROC_K4: LCALL BEEP_BL001
MOV R3,CONVERT+1
MOV CONVERT+1,CONVERT+3
MOV CONVERT+3,R3

MOV R3,CONVERT
MOV CONVERT,CONVERT+2
MOV CONVERT+2,R3
LCALL CONVETER
END_PROC_KEY:
RET

; 键扫描子程序
K_SCAN:
MOV P1,#0FFH
MOV K_NEW,#00H
MOV A,P1
CPL A
ANL A,#0F0H
SWAP A
MOV K_NEW,A
RET

USING 0
TIMER0:
; 定时器0中断服程序, 用于数码管的动态扫描
PUSH ACC
PUSH PSW
PUSH AR0
MOV TH0,#0FCH
MOV TL0,#017H
MOV P2,#0FFH
MOV A,#DIS_BUF
ADD A,DIS_INDEX
MOV R0,A
MOV A,@R0
MOV P0,A
MOV P2,DIS_DIGIT
MOV A,DIS_DIGIT
RL A
MOV DIS_DIGIT,A
INC DIS_INDEX
MOV R5 , DIS_INDEX
CJNE R5,#08H,TT
MOV DIS_INDEX ,#00H
MOV DIS_DIGIT,#0FEH

TT: POP AR0
POP PSW
POP ACC
RETI

TIMER1:
; 定时器1中断服务程序, 产生时基信号10ms
PUSH PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
MOV TH1,#0DCH
MOV TL1,#00H
INC SEC100
MOV A,SEC100
CJNE A, #100, END_TIMER1
MOV SEC100,#00H
LCALL DEC_SEC
END_TIMER1:
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI ;

DEC_SEC:
DEC SEC
MOV A ,MIN
JNZ OBTAIN
CPL P3.6
MOV A ,SEC
JNZ OBTAIN
MOV BUF_SEC_L,#0C0H
CLR TR1
CLR ET1
BEEP_BL: MOV R3,#10
MOV R2,#200
MAIN11:
CPL p3.7
LCALL DELAY500
LCALL DELAY500
DJNZ R2,MAIN11

CPL p3.6
LCALL DELAY500
LCALL DELAY500
LCALL DELAY500
MOV R2,#200
MAIN21:
CPL p3.7
LCALL DELAY500
DJNZ R2,MAIN21
DJNZ R3,MAIN11
LJMP OBTAIN
OBTAIN:
MOV A,SEC
CJNE A, #255,UPDATE_SEC

MOV SEC,#59
LCALL DEC_MIN
UPDATE_SEC:
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV BUF_SEC_H,A
MOV A,SEC
MOV B,#10
DIV AB
MOV A,B
MOVC A,@A+DPTR
MOV BUF_SEC_L,A
RET
DEC_MIN:
DEC MIN
MOV A,MIN
CJNE A, #255, UPDATE_MIN
MOV MIN,#00H
UPDATE_MIN:
MOV A,MIN
MOV B,#10
DIV AB ; A = MIN / 10
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV BUF_MIN_H,A

MOV A,MIN
MOV B,#10
DIV AB
MOV A,B
MOVC A,@A+DPTR
MOV BUF_MIN_L,A
RET
RET

; 中断INT0服务程序
INT_0:
PUSH PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
JB k1,RKEY1
MOV R7,#30
LCALL DELAYMS
JB k1,RKEY1
LJMP KP1
RKEY1 :JB k2,RKEY2
MOV R7,#30
LCALL DELAYMS
JB k2,RKEY2
LJMP KP2
RKEY2 :JB k3,RKEY3
MOV R7,#30
LCALL DELAYMS
JB k3,RKEY3
LJMP KP3
RKEY3 : JB k4,RKEY4
MOV R7,#30
LCALL DELAYMS
JB k4,RKEY4
LJMP KP4
RKEY4: LJMP KP5
KP1: LCALL BEEP_BL001
INC CONVERT
MOV A,CONVERT
CJNE A,#0AH,KP5
MOV CONVERT ,#00H
INC CONVERT+1
MOV A,CONVERT+1
CJNE A,#0AH,KP5
MOV CONVERT+1,#00H
LJMP KP5
KP2: LCALL BEEP_BL001
DEC CONVERT
MOV A,CONVERT
CJNE A,#255,KP5
MOV CONVERT,#09H
DEC CONVERT+1
MOV A,CONVERT+1
CJNE A,#255,KP5
MOV CONVERT+1,#09H
LJMP KP5
KP3: LCALL BEEP_BL001
INC CONVERT+2
MOV A,CONVERT+2
CJNE A,#0AH,KP5
MOV CONVERT+2 ,#00H
INC CONVERT+3
MOV A,CONVERT+3
CJNE A,#0AH,KP5
MOV CONVERT+3,#00H
LJMP KP5
KP4: LCALL BEEP_BL001
DEC CONVERT+2
MOV A,CONVERT+2
CJNE A,#255,KP5
MOV CONVERT+2 ,#09H
DEC CONVERT+3
MOV A,CONVERT+3
CJNE A,#255,KP5
MOV CONVERT+3,#09H
LJMP KP5
KP5:LCALL CONVETER
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI

DELAYMS:
; 延时子程序

DLY_LP1:
MOV R6,#185
DLY_LP2:
NOP
NOP
NOP
DJNZ R6,DLY_LP2
DJNZ R7,DLY_LP1
END_DLYMS:
RET
;蜂鸣器响一声子程序
BEEP_BL001: MOV R3,#1
PUTOFF: ;
MOV R2,#30
MAIN11001:
CPL p3.7
LCALL DELAY500
LCALL DELAY500
DJNZ R2,MAIN11001
DJNZ R3,PUTOFF
RET
;显示缓冲区代码转码子程序
CONVETER:
MOV A,CONVERT
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV DIS_BUF+7,A
MOV A,CONVERT+1
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV DIS_BUF+6,A
MOV A,CONVERT+2
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV DIS_BUF+5,A
MOV A,CONVERT+3
MOV DPTR,#DIS_CODE
MOVC A,@A+DPTR
MOV DIS_BUF+4,A
RET

;查表指令
DIS_CODE:
DB 0C0H
DB 0F9H
DB 0A4H
DB 0B0H
DB 099H
DB 092H
DB 082H
DB 0F8H
DB 080H
DB 090H
DB 0FFH
END
追问
还有错误麻烦看看
WARNING L30: MEMORY SPACE OVERLAP
FROM: C:000000H
TO: C:000003H
* ERROR L127: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_START
MODULE: STARTUP.obj (?C_STARTUP)
* ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ?C_START
MODULE: STARTUP.obj (?C_STARTUP)
ADDRESS: 100035CH
追答
我编译没有问题的,你那里出错是因为你工程中有startup.a51这个东东,你将之去掉就OK了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是一种32位的微控制器,由意法半导体(STMicroelectronics)公司设计和生产。STM32是一种非常常见的嵌入式系统芯片,广泛应用于物联网、汽车、工业控制、医疗设备等领域。STM32具有以下特点:1. 体积小巧:STM... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
侃说而今2
2012-10-22 · TA获得超过1.5万个赞
知道大有可为答主
回答量:3.2万
采纳率:36%
帮助的人:4250万
展开全部
C语言本身允许内联汇编,直接写C语言程序就可以。
C语言和汇编本身结合的比较紧,多看看C语言编译器手册,上面一般都有怎么和汇编混合。
写内联汇编要注意C编译器需要的寄存器需要保护。

梦想之所以被称为梦想,就是在于它是要不断追逐的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GUEL86
2012-10-18 · TA获得超过5855个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2672万
展开全部
自己改吧 第151行 MOV A,MIN L 改为 MOV A, MIN ; L 就可以了
还有 最后面 ; 查表指令 前面加 ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czpsys
2012-10-19 · TA获得超过200个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:157万
展开全部
第132行 MOV A,MIN L 改为 MOV A, MIN
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
原野yxivy
2012-10-20 · TA获得超过138个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:135万
展开全部
Keil默认是不生成HEX文件的,需要勾选
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式