用普通IO驱动LCD的控制方法-松瀚汇编源程序

/***************************************

本例程为IO直接驱动LCD的方法

 

以下是松瀚MCU汇编源程序

****************************************/

LCD 图形如下:

LCD真值表如下:

;源程序如下:
;驱动IO定义
P_COM3	EQU	P5.4
P_COM2	EQU	P5.3
P_COM1	EQU	P5.2
PM_COM3	EQU	P5M.4
PM_COM2	EQU	P5M.3
PM_COM1	EQU	P5M.2

P_SEG1	EQU	P0.4
P_SEG2	EQU	P0.5
P_SEG3	EQU	P0.6
P_SEG4	EQU	P0.7
P_SEG5	EQU	P5.0
P_SEG6	EQU	P5.1


;变量定义
C_FR	DS	1	;液晶扫描状态
R_DSPCOM1	DS	1
R_DSPCOM2	DS	1
R_DSPCOM3	DS	1

R_BITI	DS	1


;中断服务程序

INT_T0:	;  T0中断定时1MS 依次扫描八个状态
	B0BTS1	FT0IRQ
	RETI
	B0BCLR	FT0IRQ
	B0BTS1	FT0IEN
	RETI
	PUSH
	
	;以下是LCD显示扫描
	MOV	A,#256-32
	B0MOV	T0C,A	

;以下是LCD显示扫描
	INCMS	C_FR
	NOP
	MOV	A,C_FR
	SUB	A,#6
	B0BTS0	FC
	CLR	C_FR	

	B0BCLR	PM_COM1
	B0BCLR	PM_COM2
	B0BCLR	PM_COM3

	MOV	A,C_FR
	AND	A,#0X07
	@JMP_A	6
	JMP	A_COM0
	JMP	A_COM1
	JMP	A_COM2
	JMP	A_COM3
	JMP	A_COM4
	JMP	A_COM5
	JMP	A_COM5
	JMP	A_COM5


A_COM0:
	B0BSET	PM_COM1
	B0BCLR	P_COM1 ;低电平驱
	
	MOV	A,R_DSPCOM1
	
	JMP	A_SEG	
A_COM1:
	B0BSET	PM_COM2	
	B0BCLR	P_COM2 ;低电平驱

	MOV	A,R_DSPCOM2	

	JMP	A_SEG	
A_COM2:
	B0BSET	PM_COM3
	B0BCLR	P_COM3 ;低电平驱

	MOV	A,R_DSPCOM3	

	JMP	A_SEG

A_COM3:
	B0BSET	PM_COM1 
	B0BSET	P_COM1 ;高电平驱

	MOV	A,R_DSPCOM1
	XOR	A,#0XFF

	JMP	A_SEG
A_COM4:
	B0BSET	PM_COM2
	B0BSET	P_COM2 ;高电平驱

	MOV	A,R_DSPCOM2
	XOR	A,#0XFF

	JMP	A_SEG
A_COM5:
	B0BSET	PM_COM3
	B0BSET	P_COM3 ;高电平驱

	MOV	A,R_DSPCOM3
	XOR	A,#0XFF

	JMP	A_SEG
A_SEG:
	MOV	R_BITI,A

	B0BCLR	P_SEG1
	BTS0	R_BITI.	0
	B0BSET	P_SEG1

	B0BCLR	P_SEG2
	BTS0	R_BITI.	1
	B0BSET	P_SEG2

	B0BCLR	P_SEG3
	BTS0	R_BITI.	2
	B0BSET	P_SEG3

	B0BCLR	P_SEG4
	BTS0	R_BITI.	3
	B0BSET	P_SEG4

	B0BCLR	P_SEG5
	BTS0	R_BITI.	4
	B0BSET	P_SEG5

	B0BCLR	P_SEG6
	BTS0	R_BITI.	5
	B0BSET	P_SEG6

INT_EX:

	POP
	RETI


 

原文地址:https://www.cnblogs.com/pangblog/p/3249404.html