高分求一个汇编语言的完整程序!

Python011

高分求一个汇编语言的完整程序!,第1张

从键盘输入时间初始值后,用固定时间产生0.1s定时中断,触发时钟记数器记数,并将数值实时送显示器显示。

ORG 0030H

CHK00: MOV SP,#60H

LCALL LEDP

MOV DPTR,#CLOCK

MOV R0,DPL

MOV R1,DPH

MOV DPTR,#000BH

MOV A,#02H

MOVX @DPTR,A

INC DPTR

MOV A,R1

MOVX @DPTR,A

INC DPTR

MOV A,R0

MOVX @DPTR,A

LCK0:LCALL LCK0

LCALL PTDS0

MOV TMOD,#01H

ORL IE,#82H

MOV TL0,#0B7H

MOV TH0,#3CH

MOV 23H,#00H

SETB TR0

L005: LCALL DIS

LCALL PTDS0

SJMP L005

PTDS0: MOV R0,#79H

MOV A,22H

ACALL PTDS

MOV A,21H

ACALL PTDS

MOV A,20H

ACALL PTDS

RET

PTDS: MOV R1,A

ACALL PTDS1

MOV A,R1

SWAP A

PTDS1: ANL A,#0FH

MOV @R0,A

INC R0

RET

LOCK: MOV TL0,#0B7H

MOV TH0,#3CH

PUSH PSW

PUSH ACC

SETB 0D3H

INC 23H

MOV A,23H

CJNE A,#0AH,DONE

MOV 23H,#00H

MOV A,22H

INC A

DA A

MOV 22H,A

CJNE A,#60H,DONE

MOV 22H,#00H

MOV A,21H

INC A

DA A

MOV 21H,A

CJNE A,#60H,DONE

MOV 21H,#00H

MOV A,20H

INC A

DA A

MOV 20H,A

CJNE A,#24H,DONE

MOV 20H,#00H

DONE: POP ACC

POP PSW

RETI

ORG 0D59H

SSEE: SETB RS1

MOV R5,#05H

SSE2: MOV 30H,#20H

MOV 31H,#7EH

MOV R7,#06H

SSE1: MOV R1,#0DDH

MOV A,30H

MOVX @R1,A

MOV R0,31H

MOV A,@R0

MOV DPTR,#0DDFFH

MOVC A,@A+DPTR

MOV R1,#0DCH

MOVX @R1,A

MOV A,30H

RR A

MOV 30H,A

DEC 31H

MOV A,#0FFH

MOVX @R1,A

DJNZ R7,SSE1

DJNZ R5,SSE2

CLR RS1

RET

DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H

DB 82H,0F8H,80H,90H,0F8H,80H,90H

DB 88H,83H,bC6H,0A1H,86H,8EH

DB 0FFH,0CH,89H,0DEH

ORG 038EH

X3: MOV R4,A

MOV R0,#50H

MOV A,@R0

MOV R1,A

MOV A,R4

MOV @R1,A

CLR A

POP DPH

POP DPL

MOVC A,@A+DPTR

INC DPTR

CJNE A,01H,X30

DEC R1

CLR A

MOVC A,@A+DPTR

X31: MOV @R0,A

INC DPTR

PUSH DPL

PUSH DPH

RET

X30: DEC R1

MOV A,R1

SJMP X31

X2: MOV R6,#50H

X0: ACALL XLE

JNB ACC,5,XX0

DJNZ R6,X0

MOV R6,#20H

MOV R0,#50H

MOV A,@R0

MOV R0,A

MOV A,@R0

MOV R7,A

MOV A,#10H

MOV @R0,A

X1: ACALL XLE

JNB ACC,5,XX1

DJNZ R6,X1

MOV A,R7

MOV @R0,A

SJMP X2

XX1: MOV R6,A

MOV A,R7

MOV @R0,A

MOV A,R6

XX0: RET

XLE: ACALL DIS

ACALL KEY

MOV R4,A

MOV R1,#48H

MOV A,@R1

MOV R2,A

INC R1

MOV A,@R1

MOV R3,A

MOV A,R4

XRL A,R3

MOV R3,04H

MOV R4,02H

JZ X10

MOV R2,#88H

MOV R4,#88H

X10:DEC R4

MOV A,R4

XRL A,#82H

JZ X11

MOV A,R4

XRL A,#0EH

JZ X11

MOV A,R4

JZ X12

MOV R4,#20H

DEC R2

SJMP X13

X12: MOV R4,#0FH

X11: MOV R2,04H

MOV R4,03H

X13: MOV R1,#48H

MOV A,R2

MOV @R1,A

INC R1

MOV A,R3

MOV @R1,A

MOV A,R4

JB ACC,5,X113

JB ACC,4,X113

MOV DPTR,#LS3

MOVC A,@A十DPTR

X113: RET

LS3: DB 07H,04H,08H,05H,09H,06H,0AH

DB 0BH,01H,00H,02H,0FH,03H,0EH

DB 0CH,0DH

DIS: PUSH DPH

PUSH DPL

SETB RS1

MOV R0,#7EH

MOV R2,#20H

MOV R3,#00H

MOV DPTR,#LS0 ,

LS2: MOVA,@R0

MOVC A,@A+DPTR

MOV R1,#0DCH

MOVX @R1,A

MOV A,R2

INC R1

MOVX @R1,A

LS1: DJNZ R3,LS1

CLR C

RRC A

MOV R2,A

DEC R0

JNZ LS2

MOVX @R0,A

DEC R0

CPL A

MOVX @R0,A

CLR RS1

POP DPL

POP DPH

RET

LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H

DB 82H,0F8H,80H,90H,88H,83H,0C6H

DB 0A1H,86H,8EH,0FFH,0CH,89H

DB 7FH,0BFH

KEY: SETB RS1

MOV R2,#0FEH

MOV R3,#08H

MOV R0,#00H

LP1: MOV R1,#0DDH

MOV A,R2

MOVX @R1,A

RL A

MOV R2,A

INC R1

MOVX A,@R1

CPL A

ANL A,#0FH

JNZ LP0

INC R0

DJNZ R3,LP1

XP33: MOV A,#20H

XP3: MOV R2,A

CLR A

MOV R1,#0DDH

MOVX @R1,A

MOV A,R2

CLR RS1

RET

LP0: CPL A

JB ACC.0,XP0

MOV A,#00H

SJMP LPP

XP0: JB ACC.1,XP1

MOV A,#08H

SJMP LPP

XP1: JB ACC,2,XP2

MOV A,#10H

SJMP LPP

XP2: JB ACC.3,XP33

MOV A,#18H

LPP: ADD A,R0

SMP XP3

LEDP: MOV 50H,#7EH

MOV A,#10H

MOV R0,#79H

1EDS: MOV @R0,A

INC R0

CJNE R0,#7EH,1EDS

INC A

MOV @R0,A

MOV A,#20H

MOV 48H,A

MOV 49H,A

RET

END

一、使用正确的杀毒方法1

1、在安全模式或纯DOS模式下清除病毒1

2、不要使用网页在线杀毒2

二、带毒文件存在于特定的目录或文件中的清除方法2

1、带毒文件在\Temporary Internet Files目录下2

2、带毒文件在\_Restore目录下,*.cpy文件中2

3、带毒文件在.rar、.zip、.cab等压缩文件中2

4、病毒在引导区或者SUHDLOG.DAT或SUHDLOG.BAK文件中2

6、带毒文件在一些邮件文件中,如dbx、eml、box等3

7、文件中有病毒的残留代码3

8、文件错误3

9、加密的文件或目录3

10、共享目录3

11、光盘等一些存储介质4

一、使用正确的杀毒方法

1、在安全模式或纯DOS模式下清除病毒

当计算机感染病毒的时候,很多人都会图方便,在正常模式下清除病

毒,但这种方法往往是不能干净清除病毒的。

这里说的正常模式准确的说法应该是实模式(Real Mode),这里通俗

点说了。其包括正常模式的Windows和正常模式的Windows下的"MS-DOS方式"

或"命令提示符"。

在正常模式下,由于带毒的文件正在运行,是无法对这些文件直接进

行操作的。从现今的反病毒技术和病毒来看,绝大部分病毒都不可能在正

常模式下简单的就可以彻底清除了的。很多一些朋友误以为只要装上反病

毒软件,软件可以彻底清除计算机上的病毒,当病毒无法彻底清除的时候

就认为软件不好,这是很错误的!

建议在查杀病毒的时候,要在安全模式(Safe Mode)或者纯DOS下进

行清除。特别的,对于现在大多数流行的病毒,如蠕虫病毒、木马程序和

网页代码病毒等,都可以在安全模式下清除,不必要像以前那样必须要用

软盘启动杀毒;但对于一些引导区病毒和感染可执行文件的病毒才需要在

纯DOS下杀毒(建议用干净软盘启动杀毒)。而且,当计算机原来就感染了

病毒,那就更需要在安装反病毒软件后(升级到最新的病毒库),在安全

模式(Safe Mode)或者纯DOS下清除一遍病毒了!

关于如果进入安全模式请参见以下网址:

http://gz3.duba.net/secure_channel/defence_skill/2002/12/30/15443.htm

2、不要使用网页在线杀毒

我想这也是很多朋友使用的杀毒方法,其实这种方法也是和上述的一

样,同样无法彻底清除病毒,同时,由于利用了IE的特殊功能,会带来更

多的安全隐患,而且一般反病毒厂商也不会提供全面的病毒库文件,所以

这种方法充其量只能查出计算机上是否感染流行的病毒,而不能实际的进

行清除病毒。而且,换个角度来看,如果这样就能干净清除病毒的话,那

么厂商就没必要销售反病毒软件了。^o^

二、带毒文件存在于特定的目录或文件中的清除方法

这里所说的是由于某些目录和文件的特殊性,无法直接清除(包括安

全模式下杀毒等一些方式杀毒),而需要某些特殊手段清除的带毒文件。

以下所说的目录均包含其下面的子目录。

1、带毒文件在\Temporary Internet Files目录下

由于这个目录下的文件,Windows会对此有一定的保护作用(未经进一

步确认)。

所以对这个目录下的带毒文件即使在安全模式下也不能进行清除,对

于这种情况,请先关闭其他一些程序软件,然后打开IE,选择IE工具栏中

的"工具"\"Internet选项",选择"删除文件"删除即可,如果有提示"删除

所有脱机内容",也请选上一并删除。

2、带毒文件在\_Restore目录下,*.cpy文件中

这是系统还原存放还原文件的目录,只有在装了Windows Me/XP操作系

统上才会有这个目录,由于系统对这个目录有保护作用。

对于这种情况需要先取消"系统还原"功能,然后将带毒文件删除,甚

至将整个目录删除也是可以的。

3、带毒文件在.rar、.zip、.cab等压缩文件中

现今能支持直接查杀压缩文件中带毒文件的反病毒软件还很少,即使

有也只能支持常用的一些压缩格式;所以,对于绝大多数的反病毒软件来

说,最多只能检查出压缩文件中的带毒文件,而不能直接清除。而且有些

加密了的压缩文件就更不可能直接清除了。

要清除压缩文件中的病毒,建议解压缩后清除,或者借助压缩工具软

件的外挂杀毒程序的功能,对带毒的压缩文件进行杀毒。

4、病毒在引导区或者SUHDLOG.DAT或SUHDLOG.BAK文件中

这种病毒一般是引导区病毒,报告的病毒名称一般带有boot、wyx等字

样。如果病毒只是存在于移动存储设备(如软盘、闪存盘、移动硬盘)上,

就可以借助本地硬盘上的反病毒软件直接进行查杀;如果这种病毒是在硬

盘上,则需要用干净的可引导盘启动进行查杀。

对于这类病毒建议用干净软盘启动进行查杀,不过在查杀之前一定要

备份原来的引导区,特别是原来装有别的操作系统的情况,如日文Windows、

Linux等。

如果没有干净的可引导盘,则可使用下面的方法进行应急杀毒:

(1) 在别的计算机上做一张干净的可引导盘,此引导盘可以在Windows

95/98/ME系统上通过"添加/删除程序"进行制作,但要注意的是,制作软

盘的操作系统须和自己所使用的操作系统相同;

(2) 用这张软盘引导启动带毒的计算机,然后运行以下命令:

A:\>fdisk/mbr

A:\>sys a: c:

如果带毒的文件是在SUHDLOG.DAT或SUHDLOG.BAK文件中,那么直接删

除即可。这是系统在安装的时候对硬盘引导区做的一个备份文件,一般作

用不大,病毒在其中已经不起作用了。

5、带毒文件的后缀名是.vir、.kav、.kbk等

这些文件一般是一些防毒软件对原来带毒的文件做的备份文件,一般

情况下,如果确认这些文件已经无用了,那就将这些文件删除即可。

6、带毒文件在一些邮件文件中,如dbx、eml、box等

有些防毒软件可以直接检查这些邮件文件中的文件是否带毒,但往往

不能对这些带毒的文件直接的进行操作,对于一些邮箱中的带毒的信件,

可以根据防毒软件提供的信息找到那带毒的信件,删除信件中的附件或者

删除该信件;如果是eml、nws一些信件文件带毒,可以用相关的邮件软件

打开,确认该信件及其附件,然后删除相关内容。一般有大量的eml、nws

的带毒文件的话,都是病毒自动生成的文件,建议都直接删除。

7、文件中有病毒的残留代码

这种情况比较多见的就是带有CIH、Funlove、宏病毒(包括Word、

Excel、Powerpoint和Wordpro等文档中的宏病毒)和个别网页病毒的残留

代码,通常防毒软件对这些带有病毒残留代码的文件报告的病毒名称后缀

通常是int、app等结尾,而且并不常见,如W32/FunLove.app、W32.Funl-

ove.int。一般情况下,这些残留的代码不会影响正常程序的运行,也不会

传染,如果需要彻底清除的话,要根据各个病毒的实际情况进行清除。

8、文件错误

这种情况出现的并不多,通常是某些防毒软件将原来带毒的文件并没

有很干净地清除病毒,也没有很好的修复文件,造成文件无法正常使用,

同时造成别的防毒软件的误报。这些文件可以直接删除。

9、加密的文件或目录

对于一些加密了的文件或目录,请在解密后再进行病毒查杀。

10、共享目录

这里包括两种情况:本地共享目录和网络中远程共享目录(其中也包

括映射盘)。

遇到本地共享的目录中的带毒文件不能清除的情况,通常是局域网中

别的用户在读写这些文件,杀毒的时候表现为无法直接清除这些带毒文件

中的病毒,如果是有病毒在对这些目录在写病毒操作,表现为对共享目录

进行清除病毒操作后,还是不断有文件被感染或者不断生成病毒文件。以

上这两种情况,都建议取消共享,然后针对共享目录进行彻底查杀,恢复

共享的时候,注意不要开放太高的权限,并对共享目录加设密码。

对远程的共享目录(包括映射盘)查杀病毒的时候,首先要保证本地

计算机的操作系统是干净的,同时对共享目录也有最高的读写权限。如果

是远程计算机感染病毒的话,建议还是直接在远程计算机进行查杀病毒。

特别的,如果在清除别的病毒的时侯都建议取消所有的本地共享,再

进行杀毒操作。在平时的使用中,也应注意共享目录的安全性,加设密码,

同时,非必要的情况下,不要直接读取远程共享目录中的文件,建议拷贝

到本地检查过病毒后再进行操作。

11、光盘等一些存储介质

对于光盘上带有的病毒,不要试图直接清除,这是神仙也做不到的事

情。同时,对另外一些存储设备查杀病毒的,也需要注意其是否处于写保

护或者密码保护状态。

也可以后利用正版操作系统来对硬盘全部格式化没辙样也可以全部清楚病毒。

\ Test5.SRC产生的:test5.c的

编译器调用:

E:\ Program Files文件\ KEIL \ C51 \ BIN \ C51.EXE test5.c浏览DEBUG OBJECTEXTEND SRC(\ TEST5 。SRC)

NOMOD51

名称TEST5

P0数据080H

P1数据090H

P2数据0A0H />P3 DATA 0B0H

T0位0B0H.4 AC位0D0H.6

T1位0B0H.5

T2位090H.0

EA位0A8H 0.7

IE DATA 0A8H

EXF2位0C8H.6 RD位0B0H.7

ES位0A8H.4

IP DATA 0B8H

RI位098H 0.0

INT0位0B0H.2 CY位0D0H.7

TI位098H.1

INT1位0B0H.3

RCAP2H数据0CBH

PS位0B8H 0.4

SP DATA 081H

T2EX位090H.1

OV位0D0H.2

RCAP2L数据0CAH

C_T2位0C8H.1

WR位0B0H 0.6

RCLK位0C8H.5

TCLK位0C8H.4

SBUF的数据099H

PCON数据087H

SCON DATA 098H

TMOD数据089H />和TCON数据088H

IE0位088H.1

IE1位088H.3

B数据0F0H

CP_RL2位0C8H.0的

ACC数据0E0H

ET0位0A8H.1

ET1位0A8H.3

TF0位088H.5

ET2位0A8H.5

TF1位088H.7

TF2位0C8H 0.7

RB8位098H.2

TH0 DATA 08CH

EX0位0A8H.0

IT0位088H.0

TH1 DATA 08DH

TB8位098H 0.3

EX1位0A8H.2

IT1位088H.2

TH2数据0CDH

P位0D0H.0

SM0位098H.7

TL0 DATA 08AH

SM1位098H.6

TL1数据08BH

SM2位098H.5

TL2数据0CCH

P21位0A0H.1

PT0位0B8H 0.1

P23位0A0H.3

PT1位0B8H.3

RS0位0D0H.3

PT2位0B8H.5

TR0位088H.4

RS1 BIT 0D0H.4

P25位0A0H.5

TR1位088H.6

TR2位0C8H.2

PX0位0B8H.0

1804546位0B8H。 2

DPH DATA 083H

DPL DATA 082H

EXEN2位0C8H.3 REN位098H.4

T2CON数据0C8H

RXD位0B0H.0的 BR />TXD位0B0H.1

F0位0D0H.5

PSW DATA 0D0H

? PR?定时器? TEST5段码

? PR?定时器? TEST5段码

? PR? _delay? TEST5段码

? PR? _pwm1? TEST5段码

? PR? _pwm0? TEST5段码

? PR? foot0? TEST5段码

? PR? foot1? TEST5段码

? PR? foot2? TEST5段码

? PR? foot3? TEST5段码

? PR?主吗? TEST5段码

? CO? TEST5段码

? DT?

EXTRN CODE(C_STARTUP)TEST5部门数据

rud1

公众?

所述

?

M BR />公共升

公共教育的K

公众?

PUBLIC我

e

c吗?

公共B?

了?

公众rud3

rud2

日期1

date0

主要

foot3

foot2

foot1 />公共foot0

_pwm0

_pwm1

_delay

TIMER1

定时器

RSEG? DT? TEST5

rud3 rud2:DS:DS 2

一个:DS 2

B:DS 2

C?:DS 2

D:DS 2

我:DS 2

J:DS 2

K:DS 2

L:DS 2

M:DS 2

N:DS 2 BR />X:DS 2

Y:DS 2

Z:DS 2

rud1:DS 2

RSEG? CO? TEST5

date0:

DW 004B0H

DW 004C9H

DW 004E2H

DW 004FBH

DW 00514H

DW 0052DH

DW 00546H BR />DW 0055FH

DW 00578H

DW 00591H

DW 005AAH

DW 005C3H

DW 005DCH

DW 005F5H

DW 0060EH DW 00627H

DW 00640H

DW 00659H

DW 00672H

DW 0068BH

DW 006A4H

DW 006BDH

DW 006D6H

DW 006EFH

DW 00708H

日期1:

DW 003E8H

DW 00401H

DW 0041AH

DW 00433H

DW 0044CH

>DW 00465H

DW 0047EH

DW 00497H

DW 004B0H

DW 004C9H

DW 004E2H

DW 004FBH

DW 00514H

DW 0052DH

DW 00546H

DW 0055FH

DW 00578H

DW 00591H

DW 005AAH

DW 005C3H

DW 005DCH

DW 005F5H BR />DW 0060EH

DW 00627H

DW 00640H

DW 00659H

DW 00672H

DW 0068BH

DW 006A4H

DW 006BDH DW 006D6H

DW 006EFH

DW 00708H

DW 00721??H

DW 0073AH

DW 00753H

DW 0076CH

DW 00785H

DW 0079EH

DW 007B7H

DW 007D0H

#定义UCHAR无符号的字符

#定义uint无符号整数 BR />UINT A,B,C,D,I,J,K,X,Y,Z,L,M,N,rud1,rud2,rud3

SBIT P21 = P2 ^ 1BR />SBIT P23 = P2 ^ 3 / /

SBIT P25 = P2 ^ 5/ /

诠释代码date0 [] = {1200,1225,1250,1275,1300, BR />1325,1350,1375,1400,

1425,1450,1475,1500,

1525,1550,1575,1600,

1625,1650,1675,1700

1725,1750,1775,1800} / / P25 25

诠释代码日期1 [] = {1000,1025,1050,1075,1100,

1125,1150,1175,1200,

1225,1250,1275,1300,

1325,1350,1375,1400,

1425,1450,1475,1500,

>1525,1550,1575,1600,

1625,1650,1675,1700,

1725,1750,1775,1800,

1825,1850,1875,1900, BR />1925,1950,1975,2000} / / P21和P23的41

CSEG AT 0000BH

LJMP在timer0

无效定时器0(无效)中断1

RSEG? PR?定时器? TEST5

使用

定时器:

PUSH ACC

PUSH PSW

源代码行第26

{

P25?P25

源代码行第28

CPL P25

C = 20000-C

源代码行#

CLR C

MOV A,#020H

SUBB A,C? +01?的

MOV C? +01 H,A

MOV A,#04EH

SUBB A,C?的

MOV C?,A

TH0 = - (c/256)TL0 = - (C 256)

SOURCE LINE#30

CPL A

>INC一个

MOV TH0,一个

MOV A,C的吗? +01?

CPL一个

INC A

#31 MOV TL0,A

}

源的LINE

POP PSW

POP ACC

RETI

END的Timer0

CSEG AT 0001BH LJMP TIMER1

定时器无效(无效)中断3

RSEG? PR?定时器? TEST5

使用0

TIMER1:

PUSH ACC

PUSH PSW

源代码行第32

{

P21?P21

源代码行第35

CPL P21

P23?P23

源代码行第36

CPL P23

D = 20000-D

源代码行第37

CLR C

MOV A,#020H

SUBB A,D +01?

MOVe+01? ,一个

MOV A,#04EH

SUBB A,D

MOV D,一个

TH1 = - (d/256)TL1 = - (D 256)

源代码行第38

CPL一个

INC A

MOV TH1,一个

MOV A,D +01?

CPL一个

INC A的

MOV TL1,一个

}

源代码行第40

POP PSW

POP ACC

RETI

>END OF TIMER1

无效延迟(t)

RSEG? PR? _delay? TEST5

L? 0033:

0

MOV R7,#030H

MOV R6,#075H

LCALL _delay

LCALL _delay

LCALL _delay

LCALL _delay

_delay:

源代码行的#42

----变量“T? 240“分配给注册R6/R7”----

{(L = L <= T,L + +)}

源代码行第43

,#00H MOV升

MOV L#01H +01 H,

? C0003:

SETB?

MOV A,L +01?

SUBB A,R7

MOV A,L

SUBB A,R6

JNC? C0006

INC L +01?

MOV A,L +01?

JNZ? C0003

有INC升

? C0028:

SJMP? C0003

? C0006:

RET

END OF _delay

无效PWM1(Y)

RSEG? PR? _pwm1? TEST5

L? 0035:

使用0

MOV A,J +01?

ADD A,ACC

MOV R7,一个

MOV A,J

RLC A BR />MOV R6,A

MOV A,#LOW(date1)的

ADD A,R7

MOV DPL,A

MOV A,#HIGH(date1)的<BR / ADDC A,R6

MOV DPH,一个

CLR A

MOVC A,@ A + DPTR

MOV R6,A

MOV A,#01H

>MOVC A,@ A + DPTR

MOV R7,A

_pwm1:

源代码行第45

----变量“Y? 341“分配给注册R6/R7”----

{

源代码行第46

B = Y

源代码行#47 / >MOV B,R6

MOV B +01 H,R7

D = B

源代码行第48

MOVe,B

MOVe+01 H,B +01?

P21 = 1

SOURCE LINE#49

SETB P21

P23 = 1

SOURCE LINE#50 />SETB P23

TH1 = - (b/256)TL1 = - (B%256)

源代码行#51

MOV A,B

CPL一个

INC A

MOV TH1,一个

MOV A,B +01?

CPL一个

INC A

MOV TL1,A

TR1 = 1 / /启动定时器

源代码行第52

SETB TR1

}

源代码行#53

RET

完_pwm1

无效PWM0(X)

RSEG? PR? _pwm0? TEST5

L? 0034:

使用0

MOV A,我01?

A,ACC

MOV R7,一个

MOV A,我

RLC A BR />,A

MOV A,R6 MOV#LOW(date0),

ADD A,R7

MOV DPL,A

MOV A,#HIGH(date0)</ ADDC A,R6

MOV DPH,一个

CLR A

MOVC A,@ A + DPTR

MOV R6,A

MOV A,#01H

>MOVC A,@ A + DPTR

MOV R7,A

_pwm0:

源代码行第54

----变量'x? 442'分配给注册R6/R7“----

{

55#的源代码

= X

源代码行#56 / >MOV A,R6

MOV一个? +01 H,R7

C = A

源代码行#57

MOV C,?

MOV C? +01 H,A? +01?

P25 = 1

源代码行第58

SETB P25

TH0 = - (a/256)TL0 = - (256%)

MOV A,#59一个源代码行?

CPL一个

INC A

MOV TH0,A

MOV A,A? +01?

CPL一个

INC A

MOV TL0,一个

TR0 = 1 / /启动定时器

源代码行#60 SETB TR0

}

源代码行的#61

RET

_pwm0

无效foot0()

RSEG? PR? foot0? TEST5

foot0:

使用0

源代码行第62

{

源代码行#63

(i = 024,我+ +)

源代码行第64

CLR A

一个

我+01 H,A MOV MOV我,

? C0009:

{

源代码行#65

PWM0(date0 [我])

源代码行第66

LCALL大号吗? 0034

延迟(888)

源线#67

MOV R7,#078H

MOV R6,#03H

LCALL _delay

}

源代码行#68

INC我01?

MOV A,+01?

JNZ? C0029

INC我

? C0029:

CLR C

SUBB A,#018H

MOV A,我

SUBB A,#00H

JC? C0009

}

源的LINE#69

? C0012:

RET

foot0

无效foot1()

RSEG结束? PR? foot1? TEST5

foot1:

使用

源代码行#70

{

源代码行第71

中for(j = 0J <14+ +)

源代码行第72

CLR A

MOV J,A

?+01 H,A MOV

? C0013:

{PWM1(日期1 [J])

源代码行#73

LCALL?? 0035

延迟(1332)

SOURCE LINE#74

MOV R7,#034H

MOV R6,#05H

LCALL _delay

}

源代码行第75

INC?+01?的

MOV A,J +01?

JNZ? C0030

INC?

? C0030:

CLR C

SUBB A,#0EH

MOV A,J

SUBB A,#00H

JC? C0013

}

源的LINE#76

? C0016:

RET

foot1

无效foot2()

RSEG结束? PR? foot2? TEST5

foot2:

使用0

源代码行第77

{

源代码行#78

(I = 24>1,I - )

源代码行第79

MOV我01?,#00H MOV我,#018H

? C0017:

{

源代码行#80

PWM0(date0 [我])

源代码行第81

LCALL大号吗? 0034

延迟(888)

源代码行#82

MOV R7,#078H

MOV R6,#03H

LCALL _delay

}

源代码行#83

MOV A,+01?

DEC我01?

JNZ? C0031

十二月我

? C0031:

SETB?

MOV A,+01?

SUBB A,#01H

MOV A,我

SUBB A,#00H

JNC ? C0017

}

源代码行#84

? C0020:

RET

foot2

无效foot3()

RSEG结束? PR? foot3? TEST5

foot3:

源代码行#85

{

源代码行#86

中for(j = 14?>1,J - )

源代码行#87

MOV J,#00H

MOV?+01?,#0EH

? C0021:

{

源代码行#88

PWM1(日期1 [J])

源代码行第89

LCALL?? 0035

延迟(1332)

源代码行#90

MOV R7,#034H

MOV R6,#05H

LCALL _delay

}

源代码行第91

MOV A,J +01?的

DEC?+01?

JNZ? C0032

DEC?

? C0032:

SETB?

MOV A,J +01?

SUBB A,#01H

MOV A,J

SUBB A,#00H

JNC ? C0021

}

源的LINE#92

? C0024:

RET

foot3

无效的主要(无效)

RSEG结束? PR?主吗? TEST5

主要有:

使用

源代码行#93

{

源代码行第94

P21 = 0P23 = 0P25 = 0

源代码行第95

CLR P21

CLR P23

CLR P25

TMOD =为0x11EA = 1ET0 = 1ET1 = 1

源代码行#96

MOV TMOD,#011H

SETB EA

SETB ET0

SETB ET1

延迟(30000)延迟( 30000)的延迟(30000),延迟(30000),延迟(30000)

源代码行#97

LCALL大号吗? 0033

PWM0(1200)

源代码行#98

MOV R7,#0B0H

MOV R6,#04H

LCALL _pwm0

PWM1 (1000)

源代码行第99

MOV R7,#0E8H

DEC R6

LCALL _pwm1

的延迟(30000)的延迟(30000)延迟(30000),的延迟(30000),的延迟(30000)

源代码行#100

LCALL大号吗? 0033

? C 0025规范:

(1)

源代码行#101

{

源代码行#102

P21 = 0P23 = 0P25 = 0

源代码行#103

CLR P21

CLR P23

CLR P25

foot0()/ /的延迟(30000)

源代码行#104

LCALL foot0

foot1()/ /的延迟(30000)

源代码行#105

LCALL foot1

foot2()/ /延时(30000)

源代码行#106

LCALL foot2

foot3()/ /的延迟(30000)

源代码行#107

>LCALL foot3

}

源代码行的#108

SJMP? C 0025规范

END主要

END

----------------------- ---------------------------------

我用keil uVision2的开启。

你的C语言编译器正常,但打开后,编译成汇编。错误信息如下:

test5.src(138):错误A8:试图定义一个已定义的标签

我不知道在哪里的错误。

希望可以帮到你。