迪文科技论坛

 找回密码
 立即注册
搜索
查看: 2678|回复: 0

DWIN DGUSI OS例程:如何实现RTC的星期换成中文

[复制链接]

567

主题

167

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11956
发表于 2019-5-22 10:28:17 | 显示全部楼层 |阅读模式
  1. ; DWIN OS

  2. LDBR R10,0,16
  3. MOVDR 23H,R13,1 ;DGUS屏的23寄存器给到os寄存器R13放星期0-6表示 日、一、二、。。。六
  4. LDWR R16,2            ;乘以2,这里用乘法是用查表的字节
  5. MAC R10,R14,R18    ;乘积放入了os寄存器8个 18 19 20 21 22 23 24 25
  6. LDADR TAB2          ;加载TAB2,这里tab1和2是一样的,存到的初始地址会存到os的寄存器R5 R6 R7
  7. ADD R22,R4,R30    ;30 31 32 33 34 35 36 37是和=查表地址的起始地址+星期号*2字节数 ,此处只是为了计算查表指令的地址
  8. MOV R34,R4,4       ; os的寄存器 R5 R6 R7是多少我们不用管,只需要知道有起始地址了根据星期是多少来加载新的地址
  9. MOVC R24,2         ;MOVC指令的用法是将LDADR 加载的查表地址 R5 R6 R7数放入R24,R25

  10. LDWR R0,0002H ;0002H地址是用的文本显示,再吧R24里面的星期给进去到屏上面变量地址显示就行
  11. MOVXR R24,0,1

  12. END

  13. TAB1:  ;此处示范 TAB1和TAB2写法是一样的
  14. DW 0XC8D5,0XD2BB,0XB6FE,0XC8FD,0XCBC4,0XCEE5,0XC1F9 ;日一二三四五六

  15. TAB2:
  16. DW “日一二三四五六”
复制代码
常规的写法可能就是星期的那个寄存器的值需要判断6次,分别给进去, 本os程序用了查表、加法 乘法指令,设计还是比较巧妙,对于查表指令的理解需要掌握,另外加法、乘法的寄存器占用需要清晰。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-22 02:15 , Processed in 0.096358 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表