迪文科技论坛

 找回密码
 立即注册
搜索
查看: 792|回复: 2

【提问】请问大家OS的串口如何应该呀,OS程序有没有办法...

[复制链接]

1

主题

2

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2021-4-30 15:03:21 | 显示全部楼层 |阅读模式
大家好,我是刚学习迪文屏的OS,按照教程自己写了程序,但是运行起来就是按照程序写流程往下执行,现在也不知道哪里出了问题?问客服说没有OS的技术支持,请问大家OS是如何调试的,或者哪儿大佬给我看一下程序,看问题出现在哪儿,谢谢
程序的主要功能:
1、通过保存两个模式下的不同页号,来确定下次开机显示什么界面
2、就是8位字符的密码保存,修改的操作。
以下程序
; DWIN OS   
  ;假设存入30张图片 那么数据库地址为((30*6)-128)*64*1024=3407872=0x00340000
  ;从数据库中读出首次上电标志 进行判断
  LDBR         R0,0,0                         ;清除所有的寄存器R0~R255

  LDWR R0,0x3000                 ;DGUS变量缓存区
  LDWR R4,0x0034                 ;数据库存首次上电标志地址0x00340002
  LDWR R6,0x0002                        
  MOVXL 2,1                                 ;读数据库数据到DGUS变量缓冲区中
  MOVXR R10,1,1                         ;0x0034002中数据装入R10和R11中
;========首次上电进行判断
  IJNE R11,55,N_FIRST_POWER ;不等于55(不是首次上电),跳
;首次上电处理(判断进入哪个界面)
;====扫码界面按键
  LDWR R0,0x0190
  MOVXR R30,1,1                         ;读DGUS变量0x0190中数据趣入R30和R31中
  IJNE R31,1,PAN_DUAN_K         ;扫码界面按键没有按下,跳
;保存扫码界面ID
  LDWR R10,0x0008        ;第8页
  MOVRD        R10,03,2                 ;切换到扫码页面        

  LDWR R0,0x0190
  MOVXR R250,0,1                ;清除按键
  LDWR R0,0x3000
  MOVXR R10,0,1                         ;把R10和R11数据装入DGUS变量缓冲区中
  LDWR R4,0x0034
  LDWR R6,0x0006
  MOVXL 3,1                                 ;把页面ID存入数据库中
  GOTO BAO_CUN_F               
;====判断开关界面
PAN_DUAN_K:
  LDWR R0,0x0290
  MOVXR R30,1,1                         ;读DGUS变量0x0290中数据趣入R30和R31中
  IJNE R31,1,JIESHU         ;扫码界面按键没有按下,跳
  ;保存开关界面ID
  LDWR R10,0x0001        ;第1页
  MOVRD        R10,03,2                 ;切换到按键页面        

  LDWR R0,0x0290
  MOVXR R250,0,1                ;清除按键

  LDWR R0,0x3000
  MOVXR R10,0,1                         ;把R10和R11数据装入DGUS变量缓冲区中
  LDWR R4,0x0034
  LDWR R6,0x0006
  MOVXL 3,1                                 ;把页面ID存入数据库中
  GOTO BAO_CUN_F
;========不是首次上电处理
N_FIRST_POWER:
  LDWR R0,0x3000                 ;DGUS变量缓存地址
  LDWR R4,0x0034                 ;数据库存页面ID地址0x00340006
  LDWR R6,0x0006                        
  MOVXL 2,1                                 ;读数据库数据到DGUS变量缓冲区中
  MOVXR R10,1,1                         ;DGUS变量数据装入R10和R11中
  IJNE R11,1,SHAO_JIE_MIAN ;不等于1(扫码界面),跳
;开关界面
  LDWR R30,0x0001
  MOVRD R30,03,2           ;界面切换到开关界面
  CALL READ_PASSWORD          ;读出密码值

  GOTO ZHENG_CHENG
SHAO_JIE_MIAN:           ;扫码界面
  LDWR R30,0x0008
  MOVRD R30,03,2           ;界面切换到开关界面
  CALL READ_PASSWORD          ;读出密码值

  GOTO ZHENG_CHENG
;====保存首次上电标志
BAO_CUN_F:  
  LDWR R10,0x0055        ;数据为55 上电标志位
  LDWR R0,0x3000
  MOVXR R10,0,1                         ;把R10和R11数据装入DGUS变量缓冲区中
  LDWR R4,0x0034
  LDWR R6,0x0002
  MOVXL 3,1                                 ;把首次上电标志存入数据库中
  CALL FIRST_PASSWORD         ;首次上电密码为12345678        
;上电处理完成

;正常程序处理
ZHENG_CHENG:
  CALL JIE_SHUO_MIMA         ;解锁密码处理        
  CALL DENG_LU_MIMA      ;登陆密码处理
  CALL WORK_CISHU_DEAL                 ;工作次数处理
JIESHU:                                     ;结束
  END

;=========================
;解锁密码处理        
;解锁密码变量地址为0x0200~0x0207  
;=========================
JIE_SHUO_MIMA:
NOP
LDWR R0,0x0200
MOVXR R40,1,4                        ;把0x0200为首地址的数据送到R40~R47中
TESTS R40,R200,4                ;比较输入密码与数据库中密码是否相同
IJNE R0,0,PASS_WORD_ERROR;密码不相同,跳
;密码正确 切换工作模式选择界面
LDWR R30,0x0000
MOVRD R30,3,2           ;界面切换到界面选择
GOTO JIE_SHUO_MIMA_END
;密码错误
PASS_WORD_ERROR:
LDWR R0,0x0200
LDWR R10,0
MOVXR R10,0,4                         ;把密码输入框清空
JIE_SHUO_MIMA_END:
NOP
RET

;=========================
;登陆密码处理         
;登陆密码变量地址为0x0100~0x0107   
;=========================
DENG_LU_MIMA:
NOP
LDWR R0,0x0100
MOVXR R40,1,4                        ;把0x0200为首地址的数据送到R40~R47中
TESTS R40,R100,4                ;比较输入密码与数据库中密码是否相同
IJNE R0,0,PASS_WORD_ERROR;密码不相同,跳
;密码正确 切换修改参数界面
LDWR R30,0x0003
MOVRD R30,3,2           ;界面切换到参数修改界面
;====修改登陆密码处理
LDWR R0,0x0020     
MOVXR R10,1,2
  ;MOVXR             R250,0,2
IJNE R11,0,DENG_LU_PASSWORD   ;修改登陆密码没有按下,跳
;修改登陆密码按下
LDWR R0,0x0170
MOVXR R40,1,4                        ;把0x0170为首地址的数据送到R40~R47中
;保存登陆到数据库中
LDWR R0,0x3000
MOVXR R40,0,4                    ;把R100~R107数据存入DGUS变量中
LDWR R4,0x0034
LDWR R6,0x0020
MOVXL 3,4                                 ;把登陆密码存入数据库中
GOTO DENG_LU_MIMA_END
;====修改解锁密码
DENG_LU_PASSWORD:
LDWR R0,0x0024     
MOVXR R10,1,2
  ;MOVXR             R250,0,2
IJNE R11,0,DENG_LU_MIMA_END   ;修改解锁密码没有按下,跳
;修改解锁密码按下
LDWR R0,0x0270
MOVXR R40,1,4                        ;把0x0170为首地址的数据送到R40~R47中
;保存登陆到数据库中
LDWR R0,0x3000
MOVXR R40,0,4                    ;把R40~R47数据存入DGUS变量中
LDWR R4,0x0034
LDWR R6,0x0040
MOVXL 3,4                                 ;把解锁密码存入数据库中
GOTO DENG_LU_MIMA_END
;密码错误
PASS_WORD_ERROR:
LDWR R0,0x0100
LDWR R10,0
LDWR R12,0
LDWR R14,0
LDWR R16,0
MOVXR R10,0,4                         ;把密码输入框清空
DENG_LU_MIMA_END:
NOP
RET

;=========================
;工作次数处理
;清除工作次数按键的变量地址0x001A
;工作次数显示的变量地址为0x1004
;=========================   
WORK_CISHU_DEAL:
  NOP
  LDWR R0,0x001A
  MOVXR R30,1,1                         ;读DGUS变量0x001A中数据趣入R30和R31中
  IJNE R31,0,WORK_CISHU_N         ;工作清除次数按键没有按下,跳
  LDWR R0,0x1004
  LDWR R10,0
  MOVXR R10,0,1                         ;把工作次数存器清0
  GOTO BAI_CUI_WORK         ;保存工作次数值

;清除工作次数没有按下
WORK_CISHU_N:
  LDWR R0,0x1004
  MOVXR R30,1,1                         ;读DGUS变量0x1004中数据趣入R30和R31中
  TESTS R30,R240,2   ;比较R30和R31的数据与R240和R241是否相同
  IJNE R0,0,BAI_CUI_WORK ;结果不同
  GOTO WORK_CISHU_DEAL_END ;相同不用保存

;保存工作次数值   
BAI_CUI_WORK:
  MOV R240,R30,2                ;备份一下数据        
  LDWR R0,0x3000
  MOVXR R240,0,1                ;把R240和R241中数据存到0x3000中   
  LDWR R4,0x0034
  LDWR R6,0x0080
  MOVXL 3,1                                 ;把登陆密码存入数据库中   
WORK_CISHU_DEAL_END:
  NOP
  RET
;=========================
;上电读工作次数
;存入在R240和R241中
;=========================  
READ_WORK_CISHU:
  NOP
  ;====读出工作次数存入R240中
  LDWR R0,0x3000                 ;DGUS变量缓存地址
  LDWR R4,0x0034                 ;数据库存首次上电标志地址0x00340020
  LDWR R6,0x0080                        
  MOVXL 2,1                                          ;读数据库数据到DGUS变量缓冲区中
  MOVXR R240,1,1                 ;DGUS变量数据装入R240和R241中
  LDWR R0,0x1004                 ;DGUS变量地址工作次数显示地址
  MOVXR R240,0,1                 ;让显示        
  NOP
RET
;=========================
;首次上电的密码值为12345678
;登陆密码和解锁密码都为12345678
;存密码寄存器为R100~R107 共8个
;登陆密码保存到数据库0x00340020地址中
;解锁密码保存到数据库0x00340040地址中
;=========================
FIRST_PASSWORD:
  NOP
  ;====首次上电登陆写入初始密码 12345678
  LDWR R100,0x0102
  LDWR R102,0x0304
  LDWR R104,0x0506
  LDWR R106,0x0708
  LDWR R0,0x3000
  MOVXR R100,0,4                ;把R100~R107数据存入DGUS变量中
  LDWR R4,0x0034
  LDWR R6,0x0020
  MOVXL 3,4                                 ;把登陆密码存入数据库中

  ;解锁密码
  LDWR R200,0x0102
  LDWR R202,0x0304
  LDWR R204,0x0506
  LDWR R206,0x0708
  LDWR R0,0x3000
  MOVXR R200,0,4                ;把R100~R107数据存入DGUS变量中
  LDWR R4,0x0034
  LDWR R6,0x0040
  MOVXL 3,4                                 ;把解锁密码存入数据库中
  NOP
RET

  ;=========================
;从数据库中读出密码值
;存登陆密码寄存器为R100~R107 共8个
;登陆密码保存到数据库0x00340020地址中
;解锁陆密码寄存器为R200~R207 共8个
;解锁密码保存到数据库0x00340040地址中
;=========================
READ_PASSWORD:
  NOP
;====读出登陆密码
  LDWR R0,0x3000                 ;DGUS变量缓存地址
  LDWR R4,0x0034                 ;数据库存首次上电标志地址0x00340020
  LDWR R6,0x0020                        
  MOVXL 2,1                                 ;读数据库数据到DGUS变量缓冲区中
  MOVXR R100,1,4                 ;DGUS变量数据装入R100~R107中

  ;====读出解锁密码
  LDWR R0,0x3000                 ;DGUS变量缓存地址
  LDWR R4,0x0034                 ;数据库存首次上电标志地址0x00340040
  LDWR R6,0x0040                        
  MOVXL 2,1                                 ;读数据库数据到DGUS变量缓冲区中
  MOVXR R200,1,4                 ;DGUS变量数据装入R200~R207中
  NOP
RET


回复

使用道具 举报

0

主题

239

回帖

1788

积分

金牌会员

Rank: 6Rank: 6

积分
1788
发表于 2021-5-2 08:46:57 | 显示全部楼层
1、通过保存两个模式下的不同页号,来确定下次开机显示什么界面
条件触发保存下次开机启动要显示页面号到指定的数据库地址
上电初始化执行一次的程序,用来读取数据库保存的页面号,执行一次切换到指令页面。 标志位判断,只执行一次即可。
http://inforum.dwin.com.cn:20080 ... &extra=page%3D1  可以参考类似的帖子

2、就是8位字符的密码保存,修改的操作。
http://inforum.dwin.com.cn:20080 ... &extra=page%3D1 密码登录,改写很好的例程
回复

使用道具 举报

1

主题

2

回帖

50

积分

注册会员

Rank: 2

积分
50
 楼主| 发表于 2021-5-7 10:38:54 | 显示全部楼层
谢谢大佬,我看一看
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 13:38 , Processed in 0.062341 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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