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

📄 main.asm

📁 周立功单片机上的源程序
💻 ASM
字号:
;*************************************************************************
;	main.asm
;	16×16 LED点阵的扫描显示:显示一个汉字
;*************************************************************************


;*************************************************************************
;定义I/O端口
;*************************************************************************
STR	BIT	P1.3	;74HC595存储寄存器时钟(Stroage register clock)
SI	BIT	P1.4	;74HC595串行输入信号(Serial Input)
SCK	BIT	P1.5	;74HC595移位寄存器时钟(Shift register clock)


;*************************************************************************
;定义变量
;*************************************************************************
T1INTSVC_n	DATA	0x30	;用于函数T1INTSVC()


;*************************************************************************
;复位入口
;*************************************************************************
	ORG	0x0000
	LJMP	PreMain


;*************************************************************************
;定时器T1中断入口
;*************************************************************************
	ORG	0x001B
	LJMP	T1INTSVC


;*************************************************************************
;进入主程序之前的初始化
;*************************************************************************
PreMain:
	MOV	SP, #0x30
	MOV	T1INTSVC_n, #0x00
	LJMP	main


;*************************************************************************
;函数:void SysInit()
;功能:系统初始化
;*************************************************************************
SysInit:
	SETB	STR
	CLR	SI
	CLR	SCK
	ANL	TMOD, #0x0F
	ORL	TMOD, #0x10
	MOV	TH1, #0xFC
	MOV	TL1, #0x66	;定时1ms
	SETB	TR1
	SETB	ET1
	SETB	EA
	RET


;*************************************************************************
;定义汉字点阵数据表
;*************************************************************************
Zimo:
	;文字:汉,字体:Fixedsys12,大小:16×16,取模方式:纵向取模、字节正序
	DB	0x08,0x06,0x80,0x61,0x06,0x20,0x38,0x27,0x20,0x20,0x20,0x27,0x38,0x20,0x00,0x00
	DB	0x20,0x20,0x7E,0x80,0x02,0x04,0x04,0x08,0xD0,0x20,0xD0,0x08,0x0C,0x06,0x04,0x00


;*************************************************************************
;函数:void T1INTSVC() interrupt 3
;*************************************************************************
T1INTSVC:
	;unsigned char d;
	;unsigned char i;
	;unsigned char j;
	;unsigned char buf[4];
	;处理定时器T1
	CLR	TR1
	MOV	TH1, #0xFC
	MOV	TL1, #0x66
	SETB	TR1
	;保护寄存器
	PUSH	ACC
	PUSH	PSW
	PUSH	DPH
	PUSH	DPL
	PUSH	0x00
	PUSH	0x02
	PUSH	0x03
	PUSH	0x04
	;分配数组buf[4]
	MOV	A, SP
	INC	A
	MOV	R4, A
	ADD	A, #3
	MOV	SP, A
	;查表,取得要发送的数据
	MOV	R0, 0x04
	MOV	DPTR, #T1INTSVC_Tab
	MOV	A, T1INTSVC_n
	MOVC	A, @A+DPTR
	MOV	@R0, A
	INC	R0
	MOV	A, T1INTSVC_n
	ADD	A, #16
	MOVC	A, @A+DPTR
	MOV	@R0, A
	INC	R0
	MOV	DPTR, #Zimo
	MOV	A, T1INTSVC_n
	ADD	A, #16
	MOVC	A, @A+DPTR
	MOV	@R0, A
	INC	R0
	MOV	A, T1INTSVC_n
	MOVC	A, @A+DPTR
	MOV	@R0, A
	INC	T1INTSVC_n
	ANL	T1INTSVC_n, #0x0F
	;向74HC595发送数据
	CLR	STR
	MOV	R2, #0
T1INTSVC_for:
	MOV	A, R4
	ADD	A, R2
	MOV	R0, A
	MOV	A, @R0
	MOV	R3, #8
T1INTSVC_do:
	MOV	C, ACC.0
	MOV	SI, C
	SETB	SCK
	RR	A
	CLR	SCK
	DJNZ	R3, T1INTSVC_do
	INC	R2
	CJNE	R2, #4, T1INTSVC_for
	SETB	STR
	;释放数组buf[4]
	MOV	A, SP
	CLR	C
	SUBB	A, #4
	MOV	SP, A
	;恢复寄存器
	POP	0x04
	POP	0x03
	POP	0x02
	POP	0x00
	POP	DPL
	POP	DPH
	POP	PSW
	POP	ACC
	;中断返回
	RETI
T1INTSVC_Tab:
	;定义扫描数据表
	DB	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE
	DB	0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF


;*************************************************************************
;函数:void main()
;功能:主函数
;*************************************************************************
main:
	LCALL	SysInit
	SJMP	$


;*************************************************************************
;程序结束
;*************************************************************************
	END

⌨️ 快捷键说明

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