📄 0108_12864lcd-f149.asm
字号:
#include <msp430x14x.h>;
#include <msp430ftext.h>;
;--------------------------------------
;FU WEI P4.2
;CS2 EQU P4.3
;CS1 EQU P4.4
;E EQU P4.5
;R/W EQU P4.6
;RS EQU P4.7
;DAT EQU 0210H
;COM EQU 0212H
;COLUM EQU 0214H
;PAG EQU 0216H
;COD EQU 0218H
;COUNT EQU 021AH
;------------------------------------------------------------------------------
main ORG 1600h ; Program Start
;------------------------------------------------------------------------------
RESET mov.W #0900h,SP; ;Initialize stackpointer
StopWDT mov.W #WDTPW+WDTHOLD,&WDTCTL; ;Stop watchdog
call #init_xt2; ;初始化xt2,XT2=mclk=smclk
nop
MOV.B #0H,DAT;
MOV.B #0H,COM;
MOV.B #0H,COLUM;
MOV.B #0H,PAG;
MOV.B #0H,COD;
MOV.B #0H,COUNT;
MOV.B #0FFH,&P5OUT;
MOV.B #0FFH,&P5DIR; ;MOV P5,#0FFH
NOP
NOP
BIC.B #04H,&P4OUT;
MOV.B #04H,&P4DIR;
CALL #DELAY;
NOP
BIS.B #04H,&P4OUT;
CALL #YANS;
NOP
NOP
MOV.B #0C0H,COM; ;0C0H设置显示起始行
CALL #INT;
NOP
NOP
MOV.B #00H,DAT;
CALL #XIANF;
NOP
HXIAN NOP
CALL #HANZIX;
;CALL #ZIFUXIE
NOP
NOP
NOP
JMP HXIAN;
NOP
NOP
;--------------------------------------------
;ZI FU XIE
;--------------------------------------------
ZIFUXIE NOP
PUSH R4;
PUSH R5;
PUSH R6;
PUSH R7;
NOP
MOV.B #02H,PAG;
MOV.B #28H,COLUM;
MOV.B #00H,COD;
MOV.B #00H,R7;
MOV #00H,R4; ;字符个数 R4
ZLOOP MOV.B #02H,PAG;
MOV.B TAB1(R4),COD;
INC.B R4;
;MOV.B R5,COD;
CALL #CW_PR;
INC.B R7; ;字符个数 R7同R4
ADD.B #08H,COLUM;
CMP #04H,R7; ;11H 字符个数
JNE ZLOOP;
NOP
POP R7;
POP R6;
POP R5;
POP R4;
NOP
RET
;--------------------------------------------------------------------------------
HANZIX ;汉字显示
;--------------------------------------------------------------------------------
NOP
PUSH R4;
PUSH R7;
;MOV.B #00H,PAG;
MOV.B #16H,COLUM;
MOV.B #00H,COD;
MOV.B #00H,R7
MOV #00H,R4; ;字符个数 R4
ZLOOH MOV.B #02H,PAG;
;MOV.B #18H,COLUM;
MOV.B TABH(R4),COD
INC.B R4
CALL #CCW_PR;
INC.B R7; ;字符个数 R7同R4
ADD.B #08H,COLUM;
CMP #04H,R7; ;11H 字符个数
JNE ZLOOH;
NOP
POP R7;
POP R4;
MOV.B #0C1H,R11
LLO MOV.B R11,COM; ;0C0H设置显示起始行
CALL #INT;
NOP
NOP
NOP
NOP
CALL #DELAYY
NOP
NOP
CALL #DELAYY
NOP
NOP
CALL #DELAYY
NOP
NOP
NOP
CALL #DELAYY
NOP
NOP
CALL #DELAYY
NOP
NOP
CALL #DELAYY
INC.B R11
JMP LLO
NOP
NOP
RET
NOP
;-----------------------------------
;主程序 中文字符显示
;*-----------------------------------
CCW_PR PUSH R4;
PUSH R5;
PUSH R6;
PUSH R7;
MOV.B COD,R5; ;
MOV R5,&MPY; ;MOV COD,&MPY
MOV #20H,&OP2;
NOP
NOP
NOP
MOV &RESLO,TEMP1;
MOV.B #00H,R7;
ADD TEMP1,R7
CCW_1 MOV.B #10H,COUNT; XUN HUAN CI SHU
MOV.B PAG,TEMP2;
BIC.B #0F8H,PAG; ;
BIS.B #0B8H,PAG; ;ANL PAG
MOV.B PAG,COM;
CALL #PRM0;
NOP
CALL #PRR0;
NOP
;CLRC
MOV.B COLUM,R6; ;判断区域
SUB.B #40H,R6; ;
JL CCW_21; ;XIAO YU SHI TIAO ZHUAN
BIS.B #20H,PAG; ;设置区域
BIC.B #10H,PAG;
JMP CCW_3; ;YOU
NOP
CCW_21 BIS.B #10H,PAG; ;设置区域标志
CCW_3 MOV.B COLUM,COM; ;10h zhong
BIS.B #40H,COM; ;列地址设置
BIC.B #0EFH,PAG; ;ANL A,#30H
CMP.B #10H,PAG; ;判断区域标志
JNE CCW_31;
CALL #PRM0;
NOP
;MOV.B #00H,R7;
;ADD TEMP1,R7;
JMP CCW_4;
NOP ;
CCW_31 CALL #PRR0; ;WRITE ADDRESS
NOP
CCW_4 NOP
CCW_42 MOV.B CCTAB(R7),DAT;
INC.B R7;
BIC.B #0EFH,PAG;
CMP.B #10H,PAG;
JNE CCW_41;
CALL #PRM1;
NOP
JMP CCW_5;
NOP
CCW_41 CALL #PRR1;
NOP
CCW_5 INC.B COLUM; ;
CMP.B #40H,COLUM; ;
JL CCW_9; ;
;MOV.B #40H,COLUM; ;MIDDLE ZE ZHUAN YOU ;
;RLC.B PAG ;
;RLC.B PAG ;
;RLC.B PAG ;
;JC CCW_9 ;
BIS.B #20H,PAG; ;
BIC.B #10H,PAG; ;ADD 1 CHU LI
MOV.B COLUM,COM; ;10h zhong
BIS.B #40H,COM; ;
;MOV.B #40H,COM
CALL #PRR0;
NOP
CCW_9 DEC.B COUNT; ;当页循环
CMP.B #00H,COUNT;
JNE CCW_42;
NOP
;MOV.B #00H,R7
MOV.B TEMP2,PAG;
RLC.B PAG;
JC CCW_99;
MOV.B TEMP2,PAG;
INC.B PAG;
BIS.B #80H,PAG;
BIC.B #30H,PAG;
SUB.B #10H,COLUM;
JMP CCW_1;
NOP
NOP
CCW_99 NOP
POP R7;
POP R6;
POP R5;
POP R4;
NOP
RET
NOP
;******------------------------------
;主程序 西文字符显示
;*-----------------------------------
CW_PR PUSH R4
PUSH R5
PUSH R6
PUSH R7
PUSH R8
PUSH R9
PUSH R10
MOV.B COD,R6
MOV R6,&MPY
MOV #8,&OP2
NOP
NOP
MOV &RESLO,R5
MOV R5,TEMP3
MOV.B #08H,COUNT
MOV.B #00H,COD
BIC.B #0F8H,PAG
BIS.B #0B8H,PAG
MOV.B PAG,COM
CALL #PRM0
NOP
CALL #PRR0
NOP
;CLRC
MOV.B COLUM,R8 ;
SUB.B #40H,R8 ;
JL CW_21 ;
BIS.B #20H,PAG ;
JMP CW_3 ;设标志
NOP
CW_21 BIS.B #10H,PAG
CW_3 MOV.B COLUM,COM
BIS.B #40H,COM
BIC.B #0EFH,PAG
CMP.B #10H,PAG
JNE CW_31
NOP
CALL #PRM0 ;
NOP ;
JMP CW_4 ;
NOP ;
CW_31 CALL #PRR0 ;XIE LIE ADDRESS
NOP
CW_4 MOV TEMP3,R9
CW_42 MOV.B CTAB(R9),DAT
INC.B R9
BIC.B #0EFH,PAG
CMP.B #10H,PAG
JNE CW_41
CALL #PRM1
NOP
JMP CW_5
NOP
CW_41 CALL #PRR1
NOP
CW_5 INC.B COLUM
CMP.B #40H,COLUM
JL CW_9
;MOV.B #40H,COLUM
;RLC PAG
;RLC PAG
;RLC PAG
;JC CW_9
BIS.B #20H,PAG
BIC.B #10H,PAG
MOV.B COLUM,COM
BIS.B #40H,COM
CALL #PRR0
CW_9 DEC.B COUNT
CMP.B #00H,COUNT
JNE CW_42
POP R10
POP R9
POP R8
POP R7
POP R6
POP R5
POP R4
RET
NOP
;-----------------------------------
DELAY
push r5 ;3/4
mov.B #02h,r5 ;2
yans1 dec.B r5 ;2
jnz yans1 ;2
pop r5 ;3/4
ret ;5
NOP
;-----------------------------------
YANS
nop
nop
nop
ret ;5
NOP
;-----------------------------------
DELAYY push r5 ;3/4
mov #0FFFFh,r5 ;2
yans2 dec r5 ;2
jnz yans2 ;2
pop r5 ;3/4
ret ;5
NOP
;------------------------------------------------------------------------------
init_xt2; 初始化XT2
;------------------------------------------------------------------------------
bic.b #XT2OFF,&BCSCTL1 ; 启动XT2
SetupOsc2 bic.b #OFIFG,&IFG1 ; Clear OSC fault flag
mov.B #0FFh,R15 ; R15 = Delay
SetupOsc3 dec.B R15 ; Additional delay to ensure start
jnz SetupOsc3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -