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

📄 波形信号发生器程序.asm

📁 基于单片机的移相式函数发生器设计,用汇编语言编写!
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;LCD液晶监控程序
;8155扩展的PB口,PC口分别作2×8键盘的列线口、行线口
;74LS138的Y7作为8155的片选信号
          FD8155 EQU  00H     ;8155命令口低8位地址
          FG8155 EQU  0F0H    ;8155命令口高8位地址
          AD8155 EQU  01H     ;8155PA口低8位地址
          AG8155 EQU  0F0H    ;8155PA口高8位地址
          BD8155 EQU  02H     ;8155PB口低8位地址
          BG8155 EQU  0F0H    ;8155PB口高8位地址
          CD8155 EQU  03H     ;8155PC口低8位地址
          CG8155 EQU  0F0H    ;8155PC口高8位地址
          KEYZHI EQU  2FH     ;键值存放单元

            CSA  EQU  P3.4    ;液晶片选在(左,前)显示
            CSB  EQU  P3.5    ;在(右、后)显示
            E    EQU  P3.3    ;使能信号
            DI   EQU  P3.2    ;选择存指令还是数据单元
        COMSTART EQU  70H     ;液晶的启动
        COMONOFF EQU  71H     ;液晶开显示
        TABADDR  EQU  72H     ;要显示字符的表首地此
        COMDATA  EQU  73H     ;字符数据
        COMSAME  EQU  74H     ;液晶数据与指令的传送
        JCS1CS2  EQU  7FH     ;片选
      COMXSTART  EQU  76H     ;起始页地址存放单元
      COMXEND    EQU  77H     ;终止页地址存放单元
      COMYSTART  EQU  78H     ;起始列地址存放单元
      COMYEND    EQU  79H     ;终止列地址存放单元
         SCL     BIT  P3.0     ;24c04控制命令字
         SDA     BIT  P3.1     ;24c04传送数据
         FFF     EQU  20H.0    ;忙状态标志位
         ADDR    EQU  1FH      ;写入24c04的地此
         DATA0   EQU  40H      ;要读入24c04数据的首地此
         DATA1   EQU  50H      ;读回单片机存放数据的首地此

          ORG   0000H
START:    LJMP  MAIN
          ORG   0030H
MAIN:     MOV   SP,     #5FH
          MOV   PSW,    #00H
          MOV   R0,     #20H
          MOV   R7,     #96
          CLR   A
LOOP:     MOV   @R0,    A
          INC   R0
          DJNZ  R7,     LOOP
          LCALL CSH8155                   ;8155初始化
          LCALL INT                       ;液晶初始化
          MOV   COMXSTART,#0B8H           ;液晶清屏
          MOV   COMXEND,  #0BFH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #7FH
          LCALL CLEAR1

          MOV   DPTR,     #TAB0            ;欢
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#60H
          MOV   COMYEND,  #6FH
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #TAB1            ;迎
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#70H
          MOV   COMYEND,  #7FH
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #TAB2            ;使
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #4FH
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #TAB3            ;用
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#50H
          MOV   COMYEND,  #5FH
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,#TAB4                ;正
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#40H
          MOV   COMYEND,#4FH
          MOV   JCS1CS2,#00H
          LCALL DISP

          MOV   DPTR,#TAB5                ;弦
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#50H
          MOV   COMYEND,#5FH
          MOV   JCS1CS2,#00H
          LCALL DISP

          MOV   DPTR,#TAB6                ;波
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#60H
          MOV   COMYEND,#6FH
          MOV   JCS1CS2,#00H
          LCALL DISP

          MOV   DPTR,#TAB7                ;信
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#70H
          MOV   COMYEND,#7FH
          MOV   JCS1CS2,#00H
          LCALL DISP

          MOV   DPTR,#TAB8                ;号
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#40H
          MOV   COMYEND,#4FH
          MOV   JCS1CS2,#01H
          LCALL DISP

          MOV   DPTR,#TAB9                ;发
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#50H
          MOV   COMYEND,#5FH
          MOV   JCS1CS2,#01H
          LCALL DISP

          MOV   DPTR,#TABA                ;生
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#60H
          MOV   COMYEND,#6FH
          MOV   JCS1CS2,#01H
          LCALL DISP

          MOV   DPTR,#TABB                ;器
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,#0BDH
          MOV   COMYSTART,#70H
          MOV   COMYEND,#7FH
          MOV   JCS1CS2,#01H
          LCALL DISP

TSF0:     LCALL KEY
KEYGN:    MOV   DPTR,     #KEYTAB
          MOV   KEYZHI,   A
          CLR   C
          SUBB  A,        #0BH
          JNC   CLR0
   KK:    MOV   A,        KEYZHI
          MOV   B,        #03H
          MUL   AB
          JMP   @A+DPTR

CLR0:     MOV   R0,       #COMXSTART
          MOV   R1,       #COMYSTART
          MOV   COMXSTART,#0B8H
          MOV   COMXEND,  #0BFH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #7FH
          LCALL CLEAR1
          LJMP  KK

;键功能转移指令表KEYTAB
 KEYTAB:  LJMP  TSF0
          LJMP  KEY00
          LJMP  KEY01
          LJMP  KEY02
          LJMP  KEY03
          LJMP  KEY04
          LJMP  KEY05
          LJMP  KEY06
          LJMP  KEY07
          LJMP  KEY08
          LJMP  KEY09
          LJMP  KEY0A
          LJMP  KEY0B
          LJMP  KEY0C
          LJMP  KEY0D
          LJMP  KEY0E
          LJMP  KEY0F

;键功能程序区
 KEY00:
          LJMP  TSF0

 KEY01:
          LJMP  TSF0

 KEY02:
          LJMP  TSF0

 KEY03:
          LJMP  TSF0

 KEY04:
          LJMP  TSF0

 KEY05:
          LJMP  TSF0

 KEY06:
          LJMP  TSF0

 KEY07:
          LJMP  TSF0

 KEY08:
          LJMP  TSF0

 KEY09:
          LJMP  TSF0

 KEY0A:   LCALL ZHISU                     ;置频率
          LJMP  TSF0

 KEY0B:   LCALL BJ                        ;频率步进
          LJMP  TSF0

 KEY0C:   LCALL DJ                        ;频率递减
          LJMP  TSF0

 KEY0D:   LCALL FDTJ                      ;幅度调节
          LJMP  TSF0

 KEY0E:   LCALL JIDAI                     ;产生基带信号
          LJMP  TSF0

 KEY0F:   LCALL R24C02                    ;掉电保护
          LJMP  TSF0

;液晶初始化子程序
INT:      MOV    COMONOFF,    #03FH
          MOV    COMSAME,     COMONOFF
          LCALL  PRL0
          MOV    COMSTART,    #0C0H
          MOV    COMSAME,     COMSTART
          LCALL  PRL0
          RET

;写命令子程序
PRL0:     SETB   CSA
          SETB   CSB                      ;CLR CSB
          CLR    DI
PRL01:    NOP
          NOP
          NOP
          NOP
          MOV    P0,           COMSAME
          SETB   E
          CLR    E
          RET

;液晶清屏子程序
CLEAR1:   INC    COMXEND                  ;终止页地址加1
          INC    COMYEND                  ;终止列地址加1
CLS11:    MOV    A,            @R0        ;取起始页地址
          MOV    COMSAME,      A          ;临时存放页地址
          LCALL  PRL0                     ;调写清屏命令子程序
          MOV    A,            @R1        ;取起始列地址
          MOV    COMSAME,      A          ;临时存放列地址
          LCALL  PRL0                     ;调写清屏命令子程序
          MOV    A,            COMYSTART  ;恢复起始列地址
CLS22:    MOV    COMDATA,      #00H       ;点灭数据
          LCALL  PRL1                     ;调写清屏数据子程序
          INC    A                        ;列地址加1
          CJNE   A,    COMYEND,   CLS22   ;列写完否?
          INC          @R0                ;页地址加1
          MOV    A,    @R0                ;临时存放页地址
          CJNE   A,    COMXEND,    CLS11  ;页写完否?
          RET

;写数据子程序
PRL1:     PUSH   A
          SETB   CSA                      ;Write data
          SETB   CSB
PRL101:   NOP
          NOP
          NOP
          NOP
          MOV     P0,          COMDATA
          SETB    DI
          SETB    E
          CLR     E
          POP     A
          RET

;8155初始化子程序CSH8155
CSH8155:  PUSH   DPH
          PUSH   DPL
          PUSH   ACC
          MOV    P2,    #FG8155
          MOV    R1,    #FD8155
          MOV    P0,    R1
          MOV    A,     #03H
          MOVX   @R1,   A
          POP    ACC
          POP    DPL
          POP    DPH
          RET

;液晶显示子程序
DISP:     PUSH    A
          PUSH    PSW
          SETB    RS0
          CLR     RS1
          MOV     R0,#COMXSTART
          MOV     R1,#COMYSTART
          INC     COMXEND
          INC     COMYEND
PUT1:     MOV     A,           @R0
          MOV     COMSAME,     A          ;Set PAGE
          LCALL   PRL00
          MOV     A,           @R1        ;Set LINE
          MOV     COMSAME,     A
          LCALL   PRL00
PUT2:     LCALL   WORD
          LCALL   PRL11
          MOV     A,           @R1
          INC     A
          MOV     @R1,         A
          CJNE    A,           COMYEND,   PUT2
          MOV     A,           COMSAME
          MOV     @R1,         A
          MOV     A,           @R0
          INC     A
          MOV     @R0,         A
          CJNE    A ,          COMXEND,   PUT1
          POP     PSW
          POP     A
          RET

;写命令子程序
PRL00:    SETB    CSA                     ;Write ins
          SETB    CSB                     ;CLR CSB
          CLR     DI
PRL001:   NOP
          NOP
          NOP
          NOP
          MOV     P0,          COMSAME
          SETB    E
          CLR     E
          RET

;写数据子程序
PRL11:    MOV     A,           JCS1CS2
          CJNE    A,           #00H,       PRL1111
          SETB    CSA                     ;选择左片
          CLR     CSB
          LJMP    PRL111
PRL1111:  CLR     CSA                     ;选择右片
          SETB    CSB
PRL111:   NOP
          NOP
          NOP
          NOP
          MOV     P0,          COMDATA
          SETB    DI
          SETB    E
          CLR     E
          RET

;查表程序
WORD:     MOV     A,          #00H
          MOVC    A,          @A+DPTR
          MOV     COMDATA,    A
          INC     DPTR
          RET

;延时程序
DELAY:    MOV      R4,         #5
D1:       MOV      R5,         #5
D2:       MOV      R6,         #100
          DJNZ     R6,         $
          DJNZ     R5,         D2
          DJNZ     R4,         D1
          RET

DELAY1:   MOV      R4,         #50
D11:      MOV      R5,         #50
D22:      MOV      R6,         #100
          DJNZ     R6,         $
          DJNZ     R5,         D2
          DJNZ     R4,         D1
          RET

TAB:
;--  文字:  0  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,00FH,010H,020H,020H,010H,00FH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  1  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,010H,010H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,020H,020H,03FH,020H,020H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  2  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,070H,008H,008H,008H,088H,070H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,030H,028H,024H,022H,021H,030H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  3  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,030H,008H,088H,088H,048H,030H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,018H,020H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  4  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,000H,0C0H,020H,010H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,007H,004H,024H,024H,03FH,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  5  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,0F8H,008H,088H,088H,008H,008H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,019H,021H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  6  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,0E0H,010H,088H,088H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,00FH,011H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  7  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,038H,008H,008H,0C8H,038H,008H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,000H,000H,03FH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  8  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,070H,088H,008H,008H,088H,070H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,01CH,022H,021H,021H,022H,01CH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  9  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,000H,031H,022H,022H,011H,00FH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  A  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,000H,0C0H,038H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  020H,03CH,023H,002H,002H,027H,038H,020H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  B  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  008H,0F8H,088H,088H,088H,070H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  020H,03FH,020H,020H,020H,011H,00EH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  C  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  0C0H,030H,008H,008H,008H,008H,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  007H,018H,020H,020H,020H,010H,008H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  D  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  008H,0F8H,008H,008H,008H,010H,0E0H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  020H,03FH,020H,020H,020H,010H,00FH,000H,000H,000H,000H,000H,000H,000H,000H,000H

;--  文字:  E  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  008H,0F8H,088H,088H,0E8H,008H,010H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  020H,03FH,020H,020H,023H,020H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H

⌨️ 快捷键说明

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