📄 kx1.asm
字号:
CLR P0.6 ; SEL0 : 读标准频率数
CLR P0.5 ; SEL1
CLR P0.4 ; SEL2
MOV A,P2
MOV 24H,A ; 读标准频率最底8位数
SETB P0.4 ; SEL0
CLR P0.5 ; SEL1
MOV A,P2
MOV 25H,A
CLR P0.4 ; SEL0
SETB P0.5 ; SEL1
MOV A,P2
MOV 26H,A
SETB P0.4 ; SEL0 27H,26H,25H,24H 标准频率计数
SETB P0.5 ; SEL1
MOV A,P2
MOV 27H,A ; 读标准频率最高8位数
; LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
; 高电平脉宽加低电平脉宽 27H/26H/25H/24H + 23H/22H/21H/20H = 27H/26H/25H/24H
CLR C
MOV A,24H
ADDC A,20H
MOV 24H,A
MOV A,25H
ADDC A,21H
MOV 25H,A
MOV A,26H
ADDC A,22H
MOV 26H,A
MOV A,27H
ADDC A,23H
MOV 27H,A
MOV R1,#4AH
LCALL NL0
MOV 4EH,#03H
MOV 4FH,#0E8H ; X 1000 = 3E8H
LCALL H5A23
LCALL MULNM
LCALL SEND8
LCALL H5A27
LCALL DIVD1
MOV R0,#30H
MOV R1,#4FH
LCALL RRQ10
MOV 36H,#00H
LCALL HEXBCD
MOV R0,#40H
LCALL DIS_A
MOV 0AH,#02H
RET
; JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
TESTFF:
MOV 1BH,#0C5H
MOV 1CH,#17H
MOV 0DH,#0CH ; z
MOV 0EH,#0BH ; H
MOV 0FH,#0AH ;
MOV 0CH,#0AH
MOV A,0AH
CJNE A,#01H,POIN1
BASE: MOV B,#0CDH
SJMP POI8 ; LCALL DISP2
POIN1: CJNE A,#02H,POIN2
MOV B,#0CCH
SJMP POI8 ;
POIN2: CJNE A,#04H,POIN3
MOV B,#0CBH
SJMP POI8 ;
POIN3: CJNE A,#08H,POIN4
MOV B,#0CAH
SJMP POI8 ;
POIN4: CJNE A,#10H,POIN5
MOV B,#0C9H
SJMP POI8 ;
POIN5: CJNE A,#20H,POIN6
MOV B,#0C8H
SJMP POI8 ;
POIN6: CJNE A,#40H,POIN7
MOV B,#0C7H
SJMP POI8 ;
POIN7: CJNE A,#60H,POIN8
MOV B,#0C8H
SJMP POI8 ;
POIN8: CJNE A,#70H,POIN9
MOV B,#0C9H
SJMP POI8 ;
POIN9: RET
POI8: MOV A,#2EH
MOV 1AH,B
LCALL DISP2
MOV R7,#0BH
RRD1: MOV A,1BH ; 1BH中装地址
INC A
CJNE A,1AH,NOEQ
INC A
NOEQ: MOV 1BH,A
MOV R1,1CH ; 1CH装数据
DEC R1
MOV 1CH,R1
MOV A,R1
CJNE A,#0FH,NOTX6
MOV A,0AH
ANL A,#60H
CJNE A,#60H,NOTX6
MOV 0FH,#0DH
NOTX6: MOV A,@R1
LCALL ASC
MOV B,1BH
LCALL DISP2
DJNZ R7,RRD1
RET
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
TESTPW: MOV 1BH,#0C5H
MOV 1CH,#17H
MOV 0DH,#0FH ; z
MOV 0EH,#0EH ; H
MOV 0FH,#0AH ;
MOV 0CH,#0AH
MOV A,0AH
CJNE A,#01H,POI1
BASE1: MOV B,#0CDH
SJMP POI8 ; LCALL DISP2
POI1: CJNE A,#02H,POI2
MOV B,#0CCH
SJMP POI8 ;
POI2: CJNE A,#04H,POI3
MOV B,#0CBH
POI3: MOV A,#2EH ; 小数点
MOV 1AH,B
LCALL DISP2
MOV R7,#0AH
RRD2: MOV A,1BH ; 1BH中装地址
INC A
CJNE A,1AH,NOE2
INC A
NOE2: MOV 1BH,A
MOV R1,1CH ; 1CH装数据
DEC R1
MOV 1CH,R1
MOV A,@R1
LCALL ASC
MOV B,1BH
LCALL DISP2
DJNZ R7,RRD2
RET
; JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
TESTD: MOV A,12H
LCALL ASC
MOV B,#0CAH
LCALL DISP2
MOV A,11H
LCALL ASC
MOV B,#0CBH
LCALL DISP2
MOV A,#2EH
MOV B,#0CCH
LCALL DISP2
MOV A,10H
LCALL ASC
MOV B,#0CDH
LCALL DISP2
MOV A,#25H
MOV B,#0CFH
LCALL DISP2
RET
; KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
DIS_A: MOV A,@R0 ; 40H ; 显示
ANL A,#0FH
MOV 10H,A
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV 11H,A
INC R0
MOV A,@R0
ANL A,#0FH
MOV 12H,A
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV 13H,A
INC R0
MOV A,@R0
ANL A,#0FH
MOV 14H,A
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV 15H,A
INC R0
MOV A,@R0
ANL A,#0FH
MOV 16H,A
RET
DIS_B: MOV A,@R0 ; 43H
ANL A,#0F0H
SWAP A
MOV 10H,A
INC R0
MOV A,@R0 ; 44H ; 显示
ANL A,#0FH
MOV 11H,A
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV 12H,A
INC R0
MOV A,@R0 ; 45H
ANL A,#0FH
MOV 13H,A
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV 14H,A
INC R0
MOV A,@R0 ; 46H
ANL A,#0FH
MOV 15H,A
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV 16H,A
RET
; -----------------------------------功能1:测频率、测占空比、测脉宽-----------------------------(1)
;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
;------------------------------------------------------开始--------------------------------------------------------------------
CLR88: SETB P3.7
CLR P3.0
CLR P0.4 ; P2.4 ; LOCK1->
CLR P0.5 ; P2.5 ; LOCK2
CLR P3.1
SETB P3.1
CLR P3.1
MOV 2AH,#00H
CLR A
MOV 2BH,#31H
MOV 2DH,A ; 用户自定制系统标志字
; JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
MOV DAT,#01H ; CLEAR
LCALL ENABLE
CLR P3.5
CLR P0.0
MOV 79H,#00H
RET
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
XPOS EQU 40H ;定义列地址
YPOS EQU 41H ;定义行地址
FIRST_COL EQU 30H ;定义字符/汉字显示起始行
FIRST_ROW EQU 31H ;定义字符/汉字显示起始列
HZK_WID EQU 32H ;定义字符/汉字显示长度
HZK_LIN EQU 33H ;定义字符/汉字显示行数
FIRST_ADD EQU 34H ;定义字符/汉字显示起始位置
START_ADD EQU 35H ;起始位置缓存单元
FIRST_LIN EQU 36H ;起始行位置缓存单元
G_COLUMN EQU 37H ;定义图形显示起始行
G_ROW EQU 38H ;定义图形显示起始列
G_WID EQU 39H ;定义图形显示宽度
;------------------------------------------------------------------------------------------------------
CCC:
CLR RW
LCD:
LCALL LCDRESET ;调用系统初始化程序
CALL HZKLIB ;汉字显示
CALL DL8X4 ;延时
;-------------------------
CALL HZK_2 ;KONXIN公司广告
CALL HZK_3
CALL HZK_4
SJMP CCC
CALL HZK_5
CALL DDD
CALL CLEAR ;清屏
RET
DISP_A:
MOV FIRST_ADD,#00H ;设定字符/汉字显示起始位置为第一个显示单元
MOV FIRST_LIN,#01H ;设定字符/汉字显示起始位置为第一行
MOV HZK_WID,#08H ;每行显示汉字个数
MOV HZK_LIN,#04H ;显示行数
MOV START_ADD,#00H ;清首个显示地址缓存单元
LCALL HZK_DISP ;调用汉字显示子程序
RET
HZKLIB: ;显示汉字子程序
MOV DPTR, #TAB ;需要显示汉字机内码数据表
HZ8X4: MOV FIRST_ADD,#00H ;设定字符/汉字显示起始位置为第一个显示单元
MOV FIRST_LIN,#01H ;设定字符/汉字显示起始位置为第一行
MOV HZK_WID,#08H ;每行显示汉字个数
MOV HZK_LIN,#04H ;显示行数
MOV START_ADD,#00H ;清首个显示地址缓存单元
LCALL HZK_DISP ;调用汉字显示子程序
RET
DL8X4: CALL DDD ;延时
MOV A,#01H ;指令#01H为:清除屏幕文字,把地址指针指向00H单元
CALL LCDWC
RET
HZK_2: ;显示汉字子程序
MOV FIRST_ADD,#00H ;设定字符/汉字显示起始位置为第一个显示单元
MOV FIRST_LIN,#02H ;设定字符/汉字显示起始位置为第一行
MOV DPTR, #TAB_2 ;需要显示汉字机内码数据表
MOV HZK_WID,#08H ;每行显示汉字个数
MOV HZK_LIN,#02H ;显示行数
MOV START_ADD,#00H ;清首个显示地址缓存单元
LCALL HZK_DISP ;调用汉字显示子程序
LCALL DL8X4
RET
HZK_3: MOV DPTR, #TAB_3
CALL HZ8X4
SJMP DL8X4
HZK_4: MOV DPTR, #TAB_4
CALL HZ8X4
SJMP DL8X4
HZK_5: MOV DPTR, #TAB_5
CALL HZ8X4
SJMP DL8X4
CLEAR: ;清除图形显示CGRAM
MOV A,#00
CALL LCDFILL
RET
LCDFILL:
MOV R4,A
MOV XPOS,#0
MOV YPOS,#0
LCD_A1:MOV YPOS,#0
LCD_A2:
MOV A,#36H ;选择扩充指令集关闭图形显示
CALL LCDWC
;CALL LCDPOS
MOV A,XPOS
ADD A,#80H
CALL LCDWC
MOV A,YPOS
ADD A,#80H
CALL LCDWC
MOV B,A
MOV A,#30H ;重新选择基本指令集
CALL LCDWC
MOV A,R4
CALL LCDWD
CALL LCDWD
INC YPOS
MOV A,B
CJNE A,#87H,LCD_A2 ;最后一列地址?87H
INC XPOS
MOV A,XPOS
CJNE A,#20H,LCD_A1 ;最后行地址为80H+20H=0A0H
MOV XPOS,#0
LCD_A3:MOV YPOS,#0
LCD_A4:
MOV A,#36H
CALL LCDWC
MOV A,XPOS
ADD A,#80H
CALL LCDWC
MOV A,YPOS
ADD A,#88H
CALL LCDWC
MOV B,A
MOV A,#30H ;重新选择基本指令集
CALL LCDWC
MOV A,R4
CALL LCDWD
CALL LCDWD
INC YPOS
MOV A,B
CJNE A,#8FH,LCD_A4 ;最后一列地址为8FH
INC XPOS
MOV A,XPOS
CJNE A,#20H,LCD_A3 ;最后行地址为80H+20H=0A0H
RET
CHR_DISP: ;字符显示子程序
MOV R0,#50H
MOV R1,HZK_WID
CHR10: LCALL LCDPOS ;调用调整地址单元子程序
MOV A,#89H
; MOV A, START_ADD ;设定DDRAM地址,显示位置地址
LCALL LCDWC
CHR11: MOV A,@R0 ;读取显示字符
LCALL LCDWD ;显示单个字符
INC R0
DJNZ R1,CHR11
RET
;=========
;例:在第1行、第2列 显示10个数字
CHR_01:
ACALL TTT_1
MOV FIRST_LIN,#1
MOV FIRST_ADD,#0
MOV HZK_WID,#10
LCALL CHR_DISP
RET
TTT_1:
MOV A,#30H
MOV R1,#50H
MOV R2,#10H
TTT_L1: MOV @R1,A
INC R1
INC A
DJNZ R2,TTT_L1
RET
HZK_DISP: ;汉字显示子程序
MOV R1,HZK_WID
HZK10: LCALL LCDPOS ;调用调整地址单元子程序
MOV A, START_ADD ;设定DDRAM地址,显示位置地址
LCALL LCDWC
HZK11: CLR A ;因为要连续输入机内码高位(区码)、低位(位码)
MOVC A, @A+DPTR ;所以要输入两次数据,如果是字符就是输入两个字符字符代码可以看说明书
LCALL LCDWD ;DATA LCDWC
INC DPTR ;显示地址会自动加一,如果连续写就不用再输入地址,空白可用某空白汉字或字符代替
CLR A
MOVC A, @A+DPTR
LCALL LCDWD
LCALL DELAY03
INC DPTR
DJNZ R1,HZK11
MOV R1,HZK_WID ;调整显示长度
INC FIRST_LIN ;跳到下一行
DJNZ HZK_LIN,HZK10
RET
LCDRESET:
LCALL DDD ;延时
;首先选择基本指令集
MOV A, #30H ;30---基本指令操作
LCALL LCDWC
MOV A,#30H ;使用8位控制界面
LCALL LCDWC
MOV A, #01H ;指令#01H为:清除屏幕文字,把地址指针指向00H单元
LCALL LCDWC ;
LCALL DDD
LCALL DDD
MOV A, #06H ;指定在资料写入或读取时,设定游标的移动方向及指定显示的移位
LCALL LCDWC
MOV A,#0CH
CALL LCDWC
LCALL DDD
RET
;---------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -