📄 up-move.lst
字号:
A51 MACRO ASSEMBLER UP_MOVE 12/20/2006 20:58:41 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN UP-MOVE.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE UP-MOVE.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************
2 ;* *
3 ;* ME500单片机开发系统演示程序 - 向上滚动显示伟纳电子 *
4 ;* *
5 ;* 16×16LED点阵显示 *
6 ;* *
7 ;* 版本: V1.0 (2006/11/20) *
8 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
9 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
10 ;* 时间: 2006/11/20 *
11 ;* *
12 ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
13 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 ;* *
15 ;********************************************************************
16
0080 17 SDATA_595 EQU P0.0 ;串行数据输入
00A7 18 SCLK_595 EQU P2.7 ;移位时钟脉冲
0082 19 RCK_595 EQU P0.2 ;输出锁存器控制脉冲
20
00A4 21 G_74138 EQU P2.4 ;显示允许控制信号端口
22
0000 23 ORG 0000H
0000 020030 24 LJMP MAIN
000B 25 ORG 000BH
000B 02008D 26 LJMP INTT0
0030 27 ORG 0030H
28
29 ;****************************************************************
30
0030 31 MAIN:
0030 752000 32 MOV 20H,#00H
0033 74FF 33 MOV A,#0FFH
0035 F590 34 MOV P1,A
0037 F5A0 35 MOV P2,A
0039 F5B0 36 MOV P3,A
003B F580 37 MOV P0,A
38
003D C282 39 CLR RCK_595
003F 758901 40 MOV TMOD,#01H
0042 758CFC 41 MOV TH0,#0FCH
0045 758A18 42 MOV TL0,#18H
0048 75A882 43 MOV IE,#82H
004B 758170 44 MOV SP,#70H
004E 45 MAIN1:
004E 12005E 46 LCALL DIS1
0051 9000F5 47 MOV DPTR,#TAB1
0054 120071 48 LCALL MOVDISP
0057 0583 49 INC DPH
0059 120071 50 LCALL MOVDISP
005C 014E 51 AJMP MAIN1
52 ;----------------------------------------------------------
53 ;单字显示子程序
54 ;----------------------------------------------------------
005E 55 DIS1:
005E 7B5A 56 MOV R3,#5AH ;静止显示时间控制
0060 57 DIS11:
0060 7A00 58 MOV R2,#00H ;一帧扫描初始值(行地址从00-0FH)
A51 MACRO ASSEMBLER UP_MOVE 12/20/2006 20:58:41 PAGE 2
0062 9000D5 59 MOV DPTR,#TAB ;取表首址
0065 7900 60 MOV R1,#00H ;查表偏址(显示第一个字)
0067 D28C 61 SETB TR0 ;开扫描(每次一帧)
0069 62 WAIT11:
0069 100102 63 JBC 01H,DIS111 ;为1,扫描一帧结束
006C 0169 64 AJMP WAIT11
006E 65 DIS111:
006E DBF0 66 DJNZ R3,DIS11
0070 22 67 RET
68 ;---------------------------------------------------------
69 ;多字滚动显示子程序
70 ;每次8个字,入口时定义好DPTR值
71 ;---------------------------------------------------------
0071 72 MOVDISP:
0071 75F000 73 MOV B,#00H ;向上移动显示,查表偏址暂存(从00开始)
0074 74 DISLOOP:
0074 7B0A 75 MOV R3,#0AH ;移动速度
0076 76 DISMOV:
0076 7A00 77 MOV R2,#00H ;第0行开始
0078 A9F0 78 MOV R1,B
007A D28C 79 SETB TR0 ;开扫描(每次一帧)
007C 80 WAITMOV:
007C 100102 81 JBC 01H,DISMOV1 ;标志为1扫描一帧结束
007F 017C 82 AJMP WAITMOV
0081 83 DISMOV1:
0081 DBF3 84 DJNZ R3,DISMOV ;一帧重复显示(控制移动速度)
0083 05F0 85 INC B ;显示字的下一行(每行2字节)
0085 05F0 86 INC B
0087 E9 87 MOV A,R1 ;R1为0,8个字显示完。
0088 6002 88 JZ MOVOUT
008A 0174 89 AJMP DISLOOP
008C 90 MOVOUT:
008C 22 91 RET ;移动显示结束
92 ;---------------------------------------------------------
93 ;T0中断扫描子程序
94 ;---------------------------------------------------------
008D 95 INTT0:
008D C0E0 96 PUSH ACC
008F 758CFC 97 MOV TH0,#0FCH
0092 758A18 98 MOV TL0,#18H
0095 100028 99 JBC 00H,GOEND
0098 09 100 INC R1 ;取行右边字节偏址
0099 E9 101 MOV A,R1
009A 93 102 MOVC A,@A+DPTR
009B 1200C7 103 LCALL WR_595
104
009E 19 105 DEC R1 ;取行左边字节偏址
009F E9 106 MOV A,R1
00A0 93 107 MOVC A,@A+DPTR
00A1 1200C7 108 LCALL WR_595
109
00A4 D2A4 110 SETB G_74138 ;关行显示,准备刷新
00A6 00 111 NOP
00A7 00 112 NOP
00A8 D282 113 SETB RCK_595 ;产生上升沿,数据打入输出端
00AA 00 114 NOP
00AB 00 115 NOP
00AC C282 116 CLR RCK_595 ;恢复低电平
117
00AE EA 118 MOV A,R2 ;修改显示行地址
00AF F5A0 119 MOV P2,A ;修改完毕
00B1 C2A4 120 CLR G_74138 ;开行显示
00B3 0A 121 INC R2 ;下一行扫描地址值
00B4 09 122 INC R1
00B5 09 123 INC R1 ;下一行数据地址
00B6 EA 124 MOV A,R2
A51 MACRO ASSEMBLER UP_MOVE 12/20/2006 20:58:41 PAGE 3
00B7 540F 125 ANL A,#0FH
00B9 7002 126 JNZ GO2
00BB D200 127 SETB 00H ;R2为10H,现为末行扫描,置标记
00BD 128 GO2:
00BD D0E0 129 POP ACC
00BF 32 130 RETI
00C0 131 GOEND:
00C0 C28C 132 CLR TR0 ;一帧扫描完,关扫描
00C2 D201 133 SETB 01H ;一帧扫描完,置结束标记
00C4 D0E0 134 POP ACC
00C6 32 135 RETI
136
137 ;--------------------------------------------------------------
138 ;移位寄存器接收数据子程序
139 ;--------------------------------------------------------------
00C7 140 WR_595:
00C7 7C08 141 MOV R4,#08H
00C9 142 WR_LOOP:
00C9 33 143 RLC A
00CA 9280 144 MOV SDATA_595,C
00CC D2A7 145 SETB SCLK_595 ;上升沿发生移位
00CE 00 146 NOP
00CF 00 147 NOP
00D0 C2A7 148 CLR SCLK_595
00D2 DCF5 149 DJNZ R4,WR_LOOP
00D4 22 150 RET
151 ;-----------------------------------------------------------------
00D5 152 TAB:
00D5 FFFFFFFF 153 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
00D9 FFFFFFFF
00DD FFFFFFFF
00E1 FFFFFFFF
00E5 FFFFFFFF 154 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
00E9 FFFFFFFF
00ED FFFFFFFF
00F1 FFFFFFFF
155
00F5 156 TAB1:
157 ;欢
00F5 FF7FFF7F 158 DB 0ffh,07fh,0ffh,07fh,03h,07fh,0fbh,03h,0bah,0fbh,0b9h,0b7h,0d7h,0bfh,0d7h,0bfh
00F9 037FFB03
00FD BAFBB9B7
0101 D7BFD7BF
0105 EFBFD7BF 159 DB 0efh,0bfh,0d7h,0bfh,0dbh,05fh,0bbh,05fh,07eh,0efh,0feh,0f7h,0fdh,0f1h,0f3h,0fbh
0109 DB5FBB5F
010D 7EEFFEF7
0111 FDF1F3FB
160 ;迎
0115 FFFFBE7B 161 DB 0ffh,0ffh,0beh,07bh,0d9h,081h,0ebh,0bbh,0fbh,0bbh,0fbh,0bbh,0bh,0bbh,0ebh,03bh
0119 D981EBBB
011D FBBBFBBB
0121 0BBBEB3B
0125 EABBE9AB 162 DB 0eah,0bbh,0e9h,0abh,0ebh,0b7h,0efh,0bfh,0efh,0bfh,0d7h,0b9h,0b8h,03h,0ffh,0ffh
0129 EBB7EFBF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -