|
大家好,我是刚学习迪文屏的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
|
|