⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex5-9.lst

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 LST
字号:

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Cross Assembler   A S E M - 5 1   V 1.2
       =====================================================



	Source File:	EX5-9.ASM
	Object File:	EX5-9.HEX
	List File:	EX5-9.LST



 Line  I  Addr  Code            Source

    1:		N      0000		ORG 0000H          ;复位地址
    2:	  0000	02 00 30	   	 LJMP MAIN         ;跳转到主程序
    3:		N      000B		ORG 000BH          ;T0中断入口
    4:	  000B	02 00 74		LJMP TIM0          ;跳转到T0中断服务程序
    5:		N      0030		ORG 0030H          ;主程序入口地址
    6:	  0030	75 89 01	MAIN:	MOV  TMOD,#01H     ;写入T0控制字, 16位定时方式
    7:	  0033	75 A8 82		MOV  IE,#82H       ;开中断
    8:	  0036	75 30 00		MOV  30H,#00H      ;取简谱码指针
    9:	  0039	E5 30		NEXT:   MOV  A,30H         ;简谱码指针装入A
   10:	  003B	90 00 B2		MOV  DPTR,#TABLE   ;从TABLE处取简谱码
   11:	  003E	93			MOVC A,@A+DPTR
   12:	  003F	FA			MOV  R2,A          ;取得的简谱码暂存于R2
   13:	  0040	60 2D			JZ   END0          ;是否取到结束码00H?
   14:	  0042	54 0F			ANL  A,#0FH        ;不是,则取节拍码
   15:	  0044	FD			MOV  R5,A          ;节拍码存于R5
   16:	  0045	EA			MOV  A,R2          ;将简谱码装入A
   17:	  0046	C4			SWAP A             ;高、低4位交换
   18:	  0047	54 0F			ANL  A,#0FH        ;取音符码
   19:	  0049	70 05			JNZ  SING          ;取得的音符码是否为0?
   20:	  004B	C2 8C			CLR  TR0           ;是则不发音
   21:	  004D	02 00 67		lJMP  D1            ;跳转到D1
   22:	  0050	14		SING:  DEC  A             ;取得的音符码减1(不含0)
   23:	  0051	F5 22			MOV  22H,A         ;存入22H单元
   24:	  0053	23			RL   A             ;乘2
   25:	  0054	90 00 94		MOV  DPTR,#TABLE1  ;到TABLE1中取相对的高位字节值
   26:	  0057	93			MOVC A,@A+DPTR
   27:	  0058	F5 8C			MOV  TH0,A         ;取得的高位字节装入TH0和21H单元
   28:	  005A	F5 21			MOV  21H,A
   29:	  005C	E5 22			MOV  A,22H         ;再装入取得的音符码
   30:	  005E	23		        Rl   A             ;乘2
   31:	  005F	04			INC  A             ;加1
   32:	  0060	93			MOVC A,@A+DPTR     ;到TABLE1中取相对的低位字节值
   33:	  0061	F5 8A			MOV  TL0,A         ;取得的高位字节装入TL0和20H单元
   34:	  0063	F5 20			MOV  20H,A
   35:	  0065	D2 8C			SETB TR0           ;启动T0
   36:	  0067	12 00 85	D1:    LCALL DELAY        ;基本单位时间1/4拍,延时187毫秒
   37:	  006A	05 30			INC  30H           ;取简谱码指针加1
   38:	  006C	02 00 39		LJMP NEXT          ;取下一个码
   39:	  006F	C2 8C		END0:  CLR  TR0           ;停止T0
   40:	  0071	02 00 30		LJMP MAIN          ;重复循环
   41:
   42:				;定时器T0中断服务程序:
   43:	  0074	C0 E0		TIM0:	PUSH ACC           ;保护现场

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   44:	  0076	C0 D0			PUSH PSW
   45:	  0078	85 20 8A		MOV  TL0,20H       ;重设定时初值
   46:	  007B	85 21 8C		MOV  TH0,21H
   47:	  007E	B2 90		        CPL  P1.0          ;P1.0引脚电平取反
   48:	  0080	D0 D0			POP  PSW           ;恢复现场
   49:	  0082	D0 E0			POP  ACC
   50:	  0084	32			RETI               ;中断返回
   51:
   52:				;基本单位延时子程序:
   53:	  0085	7F 02		DELAY:  MOV  R7,#02H       ;fosc=12MHz时延时187毫秒
   54:	  0087	7C BB		D2:     MOV  R4,#187
   55:	  0089	7B F8		D3:     MOV  R3,#248
   56:	  008B	DB FE			DJNZ R3,$
   57:	  008D	DC FA			DJNZ R4,D3
   58:	  008F	DF F6			DJNZ R7,D2
   59:	  0091	DD F2			DJNZ R5,DELAY      ;决定节拍
   60:	  0093	22			RET
   61:
   62:				;音符对应的定时器初值表:
   63:	  0094	FB 04 FB 90	TABLE1: DW  64260,64400,64521,64580
	  0098	FC 09 FC 44
   64:	  009C	FC AC FD 09			DW 64684,64777,64820,64898
	  00A0	FD 34 FD 82
   65:	  00A4	FD C8 FE 06			DW 64968,65030,65058,65110
	  00A8	FE 22 FE 56
   66:	  00AC	FE 85 FE 9A			DW 65157,65178,65217
	  00B0	FE C1
   67:
   68:				;音符节拍表:
   69:	  00B2			TABLE:  ;1
   70:	  00B2	82 01 81 94			DB 82H,01H,81H,94H,84H
	  00B6	84
   71:	  00B7	B4 A4 04			DB 0B4H,0A4H,04H
   72:	  00BA	82 01 81 94			DB 82H,01H,81H,94H,84H
	  00BE	84
   73:	  00BF	C4 B4 04			DB 0C4H,0B4H,04H
   74:						;2
   75:	  00C2	82 01 81 F4			DB 82H,01H,81H,0F4H,0D4H
	  00C6	D4
   76:	  00C7	B4 A4 94			DB 0B4H,0A4H,94H
   77:	  00CA	E2 01 E1 D4			DB 0E2H,01H,0E1H,0D4H,0B4H
	  00CE	B4
   78:	  00CF	C4 B4 04			DB 0C4H,0B4H,04H
   79:						;3
   80:	  00D2	82 01 81 94			DB 82H,01H,81H,94H,84H
	  00D6	84
   81:	  00D7	B4 A4 04			DB 0B4H,0A4H,04H
   82:	  00DA	82 01 81 94			DB 82H,01H,81H,94H,84H
	  00DE	84
   83:	  00DF	C4 B4 04			DB 0C4H,0B4H,04H
   84:						;4
   85:	  00E2	82 01 81 F4			DB 82H,01H,81H,0F4H,0D4H
	  00E6	D4
   86:	  00E7	B4 A4 94			DB 0B4H,0A4H,94H
   87:	  00EA	E2 01 E1 D4			DB 0E2H,01H,0E1H,0D4H,0B4H
	  00EE	B4

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

   88:	  00EF	C4 B4 04			DB 0C4H,0B4H,04H
   89:	  00F2	00				DB 00H
   90:						END





                     register banks used:  ---

                     no errors




ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4





	       L I S T   O F   S Y M B O L S
	       =============================


SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
AC				  BIT	      D6
ACC				  DATA	      E0
B				  DATA	      F0
CY				  BIT	      D7
D1				  CODE	    0067	  36
D2				  CODE	    0087	  54
D3				  CODE	    0089	  55
DELAY				  CODE	    0085	  53
DPH				  DATA	      83
DPL				  DATA	      82
EA				  BIT	      AF
END0				  CODE	    006F	  39
ES				  BIT	      AC
ET0				  BIT	      A9
ET1				  BIT	      AB
EX0				  BIT	      A8
EX1				  BIT	      AA
EXTI0				  CODE	    0003
EXTI1				  CODE	    0013
F0				  BIT	      D5
IE				  DATA	      A8
IE0				  BIT	      89
IE1				  BIT	      8B
INT0				  BIT	      B2
INT1				  BIT	      B3
IP				  DATA	      B8
IT0				  BIT	      88
IT1				  BIT	      8A
MAIN				  CODE	    0030	   6
NEXT				  CODE	    0039	   9
OV				  BIT	      D2
P				  BIT	      D0
P0				  DATA	      80
P1				  DATA	      90
P2				  DATA	      A0
P3				  DATA	      B0
PCON				  DATA	      87
PS				  BIT	      BC
PSW				  DATA	      D0
PT0				  BIT	      B9
PT1				  BIT	      BB
PX0				  BIT	      B8
PX1				  BIT	      BA
RB8				  BIT	      9A
RD				  BIT	      B7
REN				  BIT	      9C
RESET				  CODE	    0000
RI				  BIT	      98
RS0				  BIT	      D3
RS1				  BIT	      D4

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 5



SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
RXD				  BIT	      B0
SBUF				  DATA	      99
SCON				  DATA	      98
SING				  CODE	    0050	  22
SINT				  CODE	    0023
SM0				  BIT	      9F
SM1				  BIT	      9E
SM2				  BIT	      9D
SP				  DATA	      81
T0				  BIT	      B4
T1				  BIT	      B5
TABLE				  CODE	    00B2	  69
TABLE1				  CODE	    0094	  63
TB8				  BIT	      9B
TCON				  DATA	      88
TF0				  BIT	      8D
TF1				  BIT	      8F
TH0				  DATA	      8C
TH1				  DATA	      8D
TI				  BIT	      99
TIM0				  CODE	    0074	  43
TIMER0				  CODE	    000B
TIMER1				  CODE	    001B
TL0				  DATA	      8A
TL1				  DATA	      8B
TMOD				  DATA	      89
TR0				  BIT	      8C
TR1				  BIT	      8E
TXD				  BIT	      B1
WR				  BIT	      B6

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -