微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 点阵汇编程序问题请懂的高手帮忙修改

点阵汇编程序问题请懂的高手帮忙修改

时间:10-02 整理:3721RD 点击:

;                 ****************************************
;                 *                                      *
;                 *    单个16×16点阵电子屏字符显示器   *
;                 *        AT89C51      12 MHz晶振       *
;                 *           2007.4. 30     LRM         *
;                 ****************************************
;显示字用查表法,不占内存,字符用16 × 16共阳LED点阵,
;效果:向上滚动显示20个字,再重复循环。
;Rl:查表偏址寄存器,B:查表首址,R2:扫描地址(从00~OFH)。
;R3:滚动显示时控制移动速度,单字显示可控制静止显示的时间。
;*****************;
;  中断入口程序   ;
;*****************;

ORG    0000H       ;复位地址
LJMP   START       ;跳到标号START执行
ORG    0003H       ;外中断0中断程序入口
RETI               ;外中断0中断返回
ORG    000BH       ;定时器T0中断程序入口
LJMP   INTT0       ;跳至INTT0执行       
ORG    0013H       ;外中断1中断程序入口
RETI               
ORG    001BH       ;定时器T1中断程序入口
RETI
ORG    0023H       ;串行中断程序入口地址
RETI
ORG    002BH       ;定时器T2中断入口地址
RETI

;*****************;
;   初始化程序    ;
*****************;


;*****************;
;     主程序      ;
;*****************;

START:     MOV    20H, #00H          ;清标志,OOH为第16行开始扫描标志,01 为1帧
                                     ;扫描结束标志
MOV    A, #0FFH           ;端口初始化
MOV    P1, A              
MOV    P2, A
MOV    P3, A
MOV    P0, A
CLR    P1.6               ;串行寄存器输入打入输出控制位
MOV    TMOD, #01H         ;使用TO作16位定时器,行扫描用。
MOV    TH0, 0FCH          ;1 ms初值(12 MHz)
MOV    TL0, #18H
MOV    SCON, #00H         ;串口0方式传送显示字节
MOV    IE, #82H           ;T0中断允许,总中断允许
MOV    SP, #70H
MAIN:      LCALL  DIS1               ;显示准备,黑屏,1.5s
MOV    DPTR, #TAB         
LCALL  MOVDISP            ;向上滚动显示一页(8个字)
INC    DPH
LCALL  MOVDISP            ;向上滚动显示一页(8个字)
INC    DPH
LCALL  MOVDISP            ;向上滚动显示一页(8个字)
AJMP   MAIN


;********************;
;多字滚动显示子程序  ;
;********************;
;每次8个字,入口时定义好DPTR值

MOVDISP:   MOV           B, #00H            ;向上移动显示,查表偏址暂存(从00开始)
DISLOOP:   MOV    R3, #07H           ;移动速度
DISMOV:    MOV    R2, #00H           ;第0行开始
           MOV    R1, B
           SETB   TR0                ;开扫描(每次一帧)
WAITMOV:  JBC    01H, DISMOV1       ;标志为1扫描一帧结束(16 ms为1帧,每行1 ms)
           AJMP   WAITMOV
DISMOV1:  DJNZ   R3, DISMOV         ;l帧重复显示(控制移动速度)
           INC     B                 ;显示字的下一行(每行2字节)
           INC     B
           MOV     A,Rl             ;Rl为0,8个字显示完
           JZ      MOVOUT
           AJMP    DISLOOP
MOVOUT:   RET                       ;移动显示结束


;********************;
;   单字显示子程序   ;
;********************;
;显示表中某个字
DIS1:      MOV    R3, #5AH           ;静止显示时间控制(16 ms *#=1. 6 s)
DIS11:     MOV    R2, #00H           ;一帧扫描初始值(行地址从00~OFH)
MOV    DPTR, #TAB         ;取表首址
MOV    R1, #00H           ;查表偏址(显示第一个字)
SETB   TR0                ;开扫描(每次一帧)
WAIT11:    JBC    01H, DIS111        ;为1,扫描一帧结束
AJMP   WAIT11
DIS111:    DJNZ   R3, DIS11
RET


;************;
;  扫描程序  ;
;************;
;1ms刷新一次,每行显示1s
INTT0:     PUSH   ACC
MOV    TH0, #0FCH         ;l ms初值重装
MOV    TL0, #18H
JBC    00H, GOEND         ;16行扫描标志为1,结束
INC    R1                 ;取行右边字节偏址
MOV    A, R1
MOVC   A, @A+DPTR         ;查表
MOV    SBUF, A            ;串口0方式发送
WAIT:      JBC    T1, GO             ;等待发送完毕
AJMP   WAIT
GO:        DEC    R1                 ;取行左边字节偏址
MOV    A, R1
MOVC   A, @A+DPTR
MOV    SBUF, A
WAIT1:     JBC    T1, GO1
AJMP   WAIT1
GO1:       SETB   P1.7               ;关行显示,准备刷新
NOP                       ;串口寄存器数据稳定
SETB   P1.6               ;产生上升沿,行数据打人输出端
NOP
NOP
CLR    P1.6               ;恢复低电平
MOV    A, R2              ;修改显示行地址
ORL    A, #0F0H           ;修改显示行地址
MOV    R2, A              ;修改显示行地址
MOV    A, P1              ;修改显示行地址
ORL    A, #0FH            ;修改显示行地址
ANL    A, R2              ;修改显示行地址
MOV    P1, A              ;修改完成
CLR    P1.7               ;开行显示
INC    R2                 ;下一行扫描地址值
INC    R1      
INC    R1                 ;下一行数据地址
MOV    A, R2
ANL    A, #0FH
JNZ    GO2
SETB   00H                ;R2为10H,现为末行扫描,置标志
GO2:       POP    ACC
           RETI
GOEND:     CLR    TR0                ;一帧扫描完,关扫描
SETB   01H                ;一帧扫描完,置结束标志
           POP    ACC
           RETI                      ;退出

;****************;
;   扫描文字表   ;
;****************;

TAB:     DB             0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏
            DB             0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
            DB             0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,
0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H   ;单
DB             0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,
0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
DB             0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,
0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH   ;片
DB             0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,
0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH
DB             0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,
0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H   ;机
DB             0ABH,077H,0AFH,077H,06EH,0F7H,0EEH,0F5H,
0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH
DB             0FFH,0FFH,0F0H,00FH,0F7H,0EFH,0F0H,00FH,
0F7H,0EFH,0F0H,00FH,0FFH,0FFH,000H,001H   ;是
DB             0FEH,0FFH,0F6H,0FFH,0F6H,007H,0F6H,0FFH,
0EAH,0FFH,0DCH,0FFH,0BFH,001H,0FFH,0FFH
DB             0FFH,0FFH,0C0H,003H,0FEH,0FFH,0FEH,0FFH,
0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH   ;工
DB             0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,
0FEH,0FFH,000H,001H,0FFH,0FFH,0FFH,0FFH
DB             0FBH,0BFH,0FBH,0BFH,0FBH,0BFH,0FBH,0BBH,
0BBH,0B9H,0DBH,0B3H,0DBH,0B7H,0EBH,0AFH   ;业
DB             0E3H,0AFH,0EBH,09FH,0FBH,0BFH,0FBH,0BFH,
0FBH,0BBH,000H,001H,0FFH,0FFH,0FFH,0FFH
DB             0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H,
0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H   ;中
DB             0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,
0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
DB             0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H,
0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H   ;中
DB             0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,
0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
DB             0E0H,00FH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,
0E0H,00FH,0FFH,0FFH,000H,001H,0DDH,0FFH   ;最
DB             0C1H,003H,0DDH,077H,0C1H,0AFH,0DCH,0DFH,
0C1H,0AFH,01DH,071H,0FCH,0FBH,0FDH,0FFH
DB             0F7H,0DFH,0F1H,0DFH,080H,003H,0F7H,0DFH,
0F0H,01FH,0F7H,0DFH,0F0H,01FH,0F7H,0DFH   ;基
DB             000H,001H,0F7H,0DFH,0EEH,0E7H,0C0H,011H,
03EH,0FBH,0FEH,0FFH,080H,003H,0FFH,0FFH
DB             0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,000H,001H,
0FCH,07FH,0FCH,0BFH,0FAH,0BFH,0FAH,0DFH   ;本
DB             0F6H,0EFH,0EEH,0E7H,0D0H,011H,03EH,0FBH,
0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FFH,0FFH
DB             0EFH,07FH,0EFH,07FH,0DFH,07FH,083H,003H,
0BAH,0FBH,0BAH,0FBH,0B9H,0FBH,083H,07BH   ;的
DB             0BBH,0BBH,0BBH,09BH,0BBH,0DBH,0BBH,0FBH,
083H,0FBH,0BBH,0D7H,0BFH,0EFH,0FFH,0FFH
DB             0FEH,0FFH,0FFH,07FH,0C0H,003H,0DFH,0FFH,
0DDH,0FFH,0DEH,0F7H,0CFH,073H,0D7H,037H   ;应
DB             0DBH,06FH,0DBH,06FH,0D9H,0DFH,0BBH,0DFH,
0BFH,0BFH,0A0H,001H,07FH,0FFH,0FFH,0FFH
DB             0FFH,0FFH,0E0H,003H,0EFH,07BH,0EFH,07BH,
0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH   ;用
DB              0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH,
0DFH,07BH,0DFH,07BH,0BFH,06BH,07FH,077H
DB              0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,
0FDH,0FFH,0FDH,0FFH,0FCH,00FH,0FDH,0EFH   ;方
DB              0FBH,0EFH,0FBH,0EFH,0F7H,0EFH,0F7H,0EFH,
0EFH,0EFH,0DFH,06FH,03FH,09FH,0FFH,0FFH
DB              0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,
0FDH,0FFH,0FDH,0FFH,0FCH,00FH,0FDH,0EFH   ;方
DB              0FBH,0EFH,0FBH,0EFH,0F7H,0EFH,0F7H,0EFH,
0EFH,0EFH,0DFH,06FH,03FH,09FH,0FFH,0FFH
DB              0FFH,05FH,0FFH,067H,0FFH,06FH,080H,003H,
0FFH,07FH,0FFH,07FH,0FFH,07FH,0C1H,07FH   ;式
DB              0F7H,0BFH,0F7H,0BFH,0F7H,0BFH,0F4H,0DFH,
0E3H,0DDH,08FH,0EDH,0DFH,0F5H,0FFH,0FBH
DB              0F9H,0BFH,0C7H,0AFH,0F7H,0B7H,0F7H,0B7H,
0F7H,0BFH,000H,001H,0F7H,0BFH,0F7H,0B7H   ;我
DB              0F1H,0D7H,0C7H,0CFH,037H,0DFH,0F7H,0AFH,
0F6H,06DH,0F7H,0F5H,0D7H,0F9H,0EFH,0FDH
DB              0FFH,007H,0C0H,06FH,0EDH,0EFH,0F6H,0DFH,
0C0H,001H,0DDH,0FDH,0BDH,0FFH,000H,003H   ;爱
DB              0FBH,0FFH,0F8H,00FH,0F3H,0DFH,0F4H,0BFH,
0EFH,03FH,09CH,0CFH,073H,0F1H,0CFH,0FBH
DB              0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,
0DEH,0F7H,000H,007H,0DEH,0F7H,0DEH,0F7H   ;单
DB              0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,
0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
DB              0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,
0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH   ;片
DB              0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,
0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH
DB              0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,
0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H   ;机
DB              0ABH,077H,0AFH,0FFH,06EH,0F7H,0EEH,0F5H,
0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH
DB              0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏
DB              0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
END

网上下载的资料,电路都做好了,可程序编译时却出错误了,请大师们帮帮忙,帮小弟修改一下,不慎感激。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top