请高手帮忙啊...把这个用汇编写的定时器程序转成C语言,谢谢啦

[复制链接]
查看11 | 回复2 | 2010-12-24 03:03:44 | 显示全部楼层 |阅读模式
ORG 00H
START:
MOV A,#00H

MOV R0,#00

MOV R1,#00

MOV R2,A

MOV R4,A

MOV R5,A

MOV 22H,A

MOV 20H,#00

mov 24h,#00

MOV 30H,#00

MOV 31H,#00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOOP:
CALL XIANSHI

MOV 30H,#00

CJNE R4,#10,LOOP

CALL JIANKAI

JMP LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XIANSHI:MOV TMOD,#01H

MOV TCON,#00H

MOV TL0,#(65536-50000) MOD 256

MOV TH0,#(65536-50000) /256

SETB TR0


XX1:
SETB P3.4

SETB P3.0

MOV A,R0

MOV B,#10

DIV AB

MOV DPTR,#MABIAO

MOVC A,@A+DPTR

MOV P1,A

CLR P3.0

LCALL YUSHI

SETB P3.0

XCH A,B

MOV DPTR,#MABIAO

MOVC A,@A+DPTR

MOV P1,A

CLR P3.1

LCALL YUSHI

SETB P3.1

MOV A,R1

MOV B,#10

DIV AB

MOV DPTR,#MABIAO

MOVC A,@A+DPTR

MOV P1,A

CLR P3.2

LCALL YUSHI

SETB P3.2

XCH A,B

MOV DPTR,#MABIAO

MOVC A,@A+DPTR

MOV P1,A

CLR P3.3

LCALL YUSHI

SETB P3.3

JNB TF0,XX1

MOV TL0,#(65536-50000) MOD 256

MOV TH0,#(65536-50000) /256

INC R5

CJNE R5,#85,XX2

MOV R5,#00

MOV 20H,#00

JMP Q2
XX2:
MOV A,20H

INC A

XCH A,20H

CJNE A,#8,XX1

CALL SHURU

MOV 20H,#00

MOV A,30H

CJNE A,#10,Q1

JMP Q2
Q1:
JMP XX1
Q2:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHURU:
CLR P3.4

JNB P3.2,JIA

JNB P3.1,JIAN

JNB P3.0,KAISHI

JMP FAN
JIA:
CJNE R0,#99,JIA1

JMP FAN
JIA1:
INC R0

MOV 31H,R0

JMP FAN
JIAN:
CJNE R0,#00,JIAN1

JMP FAN
JIAN1:
DEC R0

MOV 31H,R0

JMP FAN
KAISHI: MOV R4,#10

MOV 30H,#10
FAN:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JIANKAI:CLR P3.7

CJNE R0,#00,J1

CJNE R1,#00,J1

SETB P3.7

MOV R4,#00

MOV R0,31H

JMP FANHUI
J1:
MOV A,22H

CJNE A,#10,J2

JMP J10
J2:
CJNE R0,#00,J3

JMP J4
J3:
DEC R0
J4:
MOV 22H,#10

MOV R1,#60

JMP FANHUI
J10:
DEC R1

CJNE R1,#00,FANHUI

MOV 22H,#00
FANHUI: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
YUSHI:
MOV R6,#100
D1:
MOV R7,#5

DJNZ R7,$

DJNZ R6,D1

RET
MABIAO: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
END

回复

使用道具 举报

千问 | 2010-12-24 03:03:44 | 显示全部楼层
路过,随便找到一个,懒得改了,自己把定时器时间改一下就可以了,晶振按12m算的,有点误差/***********************************************************purpose: 系统初始化/**********************************************************/void system_Ini(){
TMOD|= 0x11;
TH1=0x1C; //12.000M
TL1=0x18;IE = 0x8A;
TR1= 1;} /*************************
回复

使用道具 举报

千问 | 2010-12-24 03:03:44 | 显示全部楼层
因为中断的时间比较短,所以建议你用定时器中断。比较精确。还有就是你求中断程序,就应该把单片机的工作频率写清楚,要不然让别人怎么帮你写啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行