?? 波形信號發生器程序.asm
字號:
;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 + -