📄 16x16.lst
字号:
A51 MACRO ASSEMBLER 16X16 01/09/2007 10:12:46 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN 16X16.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 16X16.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;***********************************************************************
2 ;要求1 滚动显示。先每行点亮, 扫描完成16行, 然后每列点亮,
3 ; 扫描完16列,然后每点点亮,从最外圈跑完,然后次外圈,
4 ;只到最中心轮流只到每一个点完成扫描。
5 ;***********************************************************************
6 ;考虑到单片机最小系统,不使用扩展。
7 ;试验一下,没有 xl1000的实验仪 ,自己想的,使用 Proteus 6.9 做为硬件仿真
8
9 ;考虑到单片机最小系统,不使用扩展,若想使用扩展,可以使用 74HC145 来开展I/O口
10 ;本系统使用P0,P1 做高电平有效;P2,P3底电平有效;
11 ;Proteus 6.9中没有16X16的点阵,所以用4片8X8点阵连成,
12
13 ;* Create by :ng_cgj 于南阳
14 ;=============================
15
0000 16 ORG 0000H
0000 758150 17 MOV SP,#50H ;设堆栈指针
18 ;逐行点亮(通过分别移位P0口,P1口来点亮各行)
0003 759000 19 ST1: MOV P1,#00H ;置P0口为底电平
0006 758001 20 MOV P0,#01H ;选中第1行
0009 75B000 21 MOV P3,#00H ;置P3口为底电平
000C 75A000 22 MOV P2,#00H ;置P2口为底电平
000F 7808 23 MOV R0,#08 ;设置移位的次数
0011 120182 24 LOOP: LCALL DELAY ;调用延时
0014 E580 25 MOV A,P0 ;读取P0口
0016 23 26 RL A ;左移一位
0017 F580 27 MOV P0,A ;送值回P0口
0019 D8F6 28 DJNZ R0, LOOP ;判断移位8次数
001B 758000 29 MOV P0,#00H ;置P0口为底电平
001E 759001 30 MOV P1,#01H ;选中第9行
0021 7808 31 MOV R0,#08 ;设置移位的次数
0023 120182 32 LOOP2: LCALL DELAY ;调用延时
0026 F590 33 MOV P1,A ;读取P1口
0028 23 34 RL A ;左移一位
0029 F590 35 MOV P1,A ;送值回P1口
002B D8F6 36 DJNZ R0, LOOP2 ;判断移位8次数
002D 759000 37 MOV P1,#00H ;置P1口为底电平,熄灭最后一行
38 ;逐列点亮(通过同时移位P2口,P3口来点亮各行)
0030 7580FF 39 ST2: MOV P0,#0FFH ;置P0口为高电平
0033 7590FF 40 MOV P1,#0FFH ;置P1口为高电平
0036 75B0FF 41 MOV P3,#0FFH ;置P3口为高电平
0039 75A0FE 42 MOV P2,#0FEH ;选中右边第1列
003C 7808 43 MOV R0,#08 ;设置移位的次数
003E 120182 44 LOOP3: LCALL DELAY ;调用延时
0041 E5A0 45 MOV A,P2 ;读取P2口
0043 23 46 RL A ;左移一位
0044 F5A0 47 MOV P2,A ;送值回P2口
0046 D8F6 48 DJNZ R0,LOOP3 ;判断移位8次数
0048 75A0FF 49 MOV P2,#0FFH ;置右8列为0
004B 75B0FE 50 MOV P3,#0FEH ;选中第9列
004E 7808 51 MOV R0,#08 ;设置移位的次数
0050 120182 52 LOOP4: LCALL DELAY ;调用延时
0053 E5B0 53 MOV A,P3 ;读取P3口
0055 23 54 RL A ;左移一位
0056 F5B0 55 MOV P3,A ;送值回P3口
0058 D8F6 56 DJNZ R0,LOOP4 ;判断移位8次数
005A 75B0FF 57 MOV P3,#0FFH ;熄灭最后一列
58
A51 MACRO ASSEMBLER 16X16 01/09/2007 10:12:46 PAGE 2
59 ;逐点点亮
60
005D 61 ST5:
005D 753007 62 MOV 30H,#07 ;设置移位的次数
0060 75F007 63 MOV B,#07 ;设置移位的次数
64 ;行点点亮
0063 758001 65 MOV P0,#01H ;选中第1行
0066 75B0FF 66 MOV P3,#0FFH ;置P3口为高电平
0069 75A0FE 67 MOV P2,#0FEH ;点亮有上角第一点
006C 759000 68 MOV P1,#00H ;置P1口为底电平
006F A9F0 69 ST4: MOV R1,B ;取移位的次数的数值
0071 120179 70 LCALL DELAY1 ;调用延时
0074 12014D 71 LCALL P2RL ;调用P2口左移
0077 75A07F 72 MOV P2,#7FH ;点亮第8点
007A 120179 73 LCALL DELAY1 ;调用延时
007D 75A0FF 74 ST6: MOV P2,#0FFH ;置P2口为高电平
0080 75B0FE 75 MOV P3,#0FEH ;点亮第9点
0083 120179 76 LCALL DELAY1 ;调用延时
0086 A9F0 77 MOV R1,B ;取移位的次数的数值
0088 120163 78 LCALL P3RL ;调用P3口左移
79 ;列点点亮
008B A9F0 80 MOV R1,B ;取移位的次数的数值
008D 120179 81 LCALL DELAY1 ;调用延时
0090 12012C 82 LCALL P0RL ;调用P0口左移
0093 758000 83 MOV P0,#00H ;置P0口为底电平
0096 759001 84 MOV P1,#01H ;点亮列点
0099 A9F0 85 MOV R1,B ;取移位的次数的数值
009B 120179 86 LCALL DELAY1 ;调用延时
009E 120137 87 LCALL P1RL ;调用P1口左移
88 ;行点点亮
00A1 A9F0 89 MOV R1,B ;取移位的次数的数值
00A3 120179 90 LCALL DELAY1 ;调用延时
00A6 12016E 91 LCALL P3RR ;调用P3口右移
00A9 75A07F 92 MOV P2,#07FH ;点亮行点
00AC 75B0FF 93 MOV P3,#0FFH ;置P3口为高电平
00AF A9F0 94 MOV R1,B ;取移位的次数的数值
00B1 120179 95 LCALL DELAY1 ;调用延时
00B4 120158 96 LCALL P2RR ;调用P2口右移
97 ;列点点亮
00B7 A9F0 98 MOV R1,B ;取移位的次数的数值
00B9 120179 99 LCALL DELAY1 ;调用延时
00BC 120142 100 LCALL P1RR ;调用P1口右移
00BF 758080 101 MOV P0,#80H ;点亮列点
00C2 759000 102 MOV P1,#00H ;置P1口为底电平
00C5 120179 103 LCALL DELAY1 ;调用延时
00C8 4027 104 JC FOUR ;判断是否扫描到最后四点?
00CA 1530 105 DEC 30H ;扫描完1圈,移位数减1
00CC 8530F0 106 MOV B,30H ;保存移位数值
00CF A9F0 107 MOV R1,B ;取移位的次数的数值
00D1 120179 108 LCALL DELAY1 ;调用延时
00D4 120121 109 LCALL P0RR ;调用P0口右移
00D7 E530 110 MOV A,30H ;取移位数值
00D9 B40142 111 CJNE A,#1,BACK ;比较循环的次数,没完则继续点亮下一点
112 ;点亮最后4X4
00DC 7902 113 MOV R1,#02 ;取移位的次数的数值
00DE 12014D 114 LCALL P2RL ;调用P2口左移
00E1 75A0FF 115 MOV P2,#0FFH ;置P2口为高电平
00E4 75B0FE 116 MOV P3,#0FEH
00E7 753001 117 MOV 30H,#01 ;设置移位的次数的数值
00EA 8530F0 118 MOV B,30H ;保存移位数值
00ED D3 119 SETB C ;置位C
00EE 02007D 120 LJMP ST6 ;没有点亮完,返回继续
121 ;点亮最后4点
00F1 75A07F 122 FOUR: MOV P2,#7FH ;点亮倒数第四点
00F4 120179 123 LCALL DELAY1
124
A51 MACRO ASSEMBLER 16X16 01/09/2007 10:12:46 PAGE 3
00F7 75A0FF 125 MOV P2,#0FFH ;点亮倒数第三点
00FA 75B0FE 126 MOV P3,#0FEH
00FD 120179 127 LCALL DELAY1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -