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

📄 16x16.lst

📁 点阵动态扫描的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -