📄 lcd_putc.s
字号:
;/*
;*********************************************************************************************************************
;* 东软培训中心教学项目:基于ARM和uc/os-II的PDA系统
;*
;* (c) Copyright 2005, 东软培训中心
;* All Rights Reserved
;*
;* 模块名称:LCD驱动程序模块
;* 文件名:LCD_PUTC.S
;* 作者:朱成果
;* 时间:2005年9月20日
;* 版本:V0.01
;**********************************************************************************************************************
;*/
AREA LCDPutc,CODE,READONLY
EXPORT LCD_PUTC
EXPORT LCD_DDB
IMPORT ASCIIFNT
IMPORT pLCDBuffer16
IMPORT NEUTIG
IMPORT MAINPAGE
IMPORT SYSTIME
IMPORT SYSDATE
IMPORT B_RETURN
IMPORT VERSION
IMPORT SETRTCDDP
IMPORT SETRECDDP
IMPORT DISRECDDP
IMPORT DELETE
IMPORT NORECORD
DISPBUFF equ 0x0c000000
DISPLAST equ 0x11e38
DISPEND equ DISPBUFF + DISPLAST
ENTRY ;调用前r0:要打印的字符;r1:所要显示的颜色;r2:显示缓存区指针;r3:背景颜色
LCD_PUTC
stmfd r13!,{r4-r8,r14}
cmp r0,#0x80
bhs %F10
cmp r2,#DISPBUFF
blo %F10
ldr r4,=DISPEND
cmp r2,r4
bhi %F10
bic r2,r2,#7 ;字符地址8字节对齐
mov r5,r0
mov r4,r2
mov r6,r1
mov r1,#0x0 ; r1是字模行坐标
add r0,r5,r5,lsl #1
ldr r2,=ASCIIFNT ; 字模指针
add r0,r2,r0,lsl #2 ; r0指向该字符的字模
0 ldrb r5,[r0,r1]
mov r7,r3
tst r5,#0x10 ; 取字模行d4位
beq %F1
mov r7,r6 ;当象素值不为0时显示前景色
b %F1
1 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x20 ; 取字模行d5位
beq %F2
mov r7,r6
2 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x40 ; 取字模行d6位
beq %F3
mov r7,r6
3 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x80 ; 取字模行d7位
beq %F4
mov r7,r6
4 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x1 ; 取字模行d0位
beq %F5
mov r7,r6
5 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x2 ; 取字模行d1位
beq %F6
mov r7,r6
6 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x4 ; 取字模行d3位
beq %F7
mov r7,r6
7 strb r7,[r4,#0]
mov r7,r3
add r4,r4,#1
tst r5,#0x8 ; 取字模行d4位
beq %F8
mov r7,r6
8 strb r7,[r4,#0]
add r4,r4,#0x140
bic r4,r4,#0x7
add r1,r1,#0x01
cmp r1,#0xc
blo %B0
mov r0,#0x1
9 ldmfd r13!,{r4-r8,r14} ;返回
bx r14
10 mov r0,#0x0
b %B9
LTORG
LCD_DDB
stmfd r13!,{r1-r6,r14}
adr r1,DDBTAB ;像素数据首地址在r0中
ldr r0,[r1,r0,lsl #2]
ldr r4,[r0],#0x4 ;每行像素数
ldr r5,[r0],#0x4 ;行数
ldr r6,[r0],#0x4 ;显示开始地址
10 mov r2,r4
mov r1,r6
11 ldr r3,[r0],#0x4
str r3,[r1],#0x4
subs r2,r2,#0x4
bne %B11
add r6,r6,#0x140
subs r5,r5,#0x1
bne %B10
ldmfd r13!,{r1-r6,r14}
bx r14
DDBTAB
dcd NEUTIG
dcd MAINPAGE
dcd SYSTIME
dcd SYSDATE
dcd B_RETURN
dcd VERSION
dcd DISRECDDP
dcd SETRTCDDP
dcd SETRECDDP
dcd DELETE
dcd NORECORD
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -