T5D1开发心得
迪文目前T5产品型号非常多,就个人来看开发来看,对T5UID1熟悉度较高,主要包括4.3寸和3.5寸86盒产品。
关于T5UID1,从入门方面来讲和原来的K600+系列产品相比地址和一些指令出现了变动,1包括T5的地址规划必须从1000H开始原来的K600+是从0开始,2,指令中数据库操作指令MOVXL指令取消,数据库读写改为地址0008H如下图
数据库读写变为
LDWR R0,0008H
LDWR R20,5A(A5)00H
LDWR R22,0000H
LDWR R24,1000H
LDWR R26,0002H
MOVXR R20,0,4
上面几行代码表示将将变量地址1000H从数据库地址000000中读出来/(写进去)
读取长度为两个字。
另外T5UID1相比K600+在编写时多了框架要求如下图;
其中当需要使用中断时标准格式为
ORG 1000H
GOTO MAIN
GOTO T0INT
GOTO T1INT
GOTO T2INT
ORG 1080H
MAIN NOP
GOTO MAIN
T0INT:
NOP
RETI
T1INT:
NOP
RETI
T2INT:
NOP
RETI
不需要使用中断将 GOTO T1INT换位NOP即可。
主程序从MAIN开始即可。
说完了区别那么开始关于T5UID1的初步编程,首先从最简单的变量地址赋值开始如下图:
其中R0为加载变量地址将对其读写,1000H表示变量地址,R10之前各寄存器有实际应用含义不可随意使用,200表示赋值量,MOVXR读写指令,详细使用见迪文开发指南。
写完上面表示会基本的赋值,那么上面对应的“变量地址赋值”是程序对应的子程序,这时候就需要了解相关的子程序调用了,迪文的子程序调用格式为
CALL 子程序
子程序:
NOP
RET
各子程序结束时需要RET不然会继续向下执行不会结束,子程序支持嵌套。
讲到这里各位对基本功能块的写法有个基本了解,为了加深映像下面增加了几个例子,比如跳转,加减法如下
从上图那么就可以进行基本的运算和判断,其中,ADD表示进行加法运算,R10,R14为32Bit数,R20表示64Bit数据,100+100结果等于200结果在R27寄存器,所以使用LDWR时是双字节长度,所以从R26将其取出,IJNE为8Bit立即数判断,表示对于一些需要判断条件1001H地址中的数据等于200时执行操作,否则跳转,执行其它功能,这种判断对执行特殊指令的功能特别适用,比如温控器应用中,达到多少温度执行开关机或者定时开关机功能。这样使用逻辑判断来实现较为复杂的功能。
通过上面的学习相信大家对T5UID1有个基本的思路,配合开发指南的详细说明,一些较为简单的功能应该能较快写出,只有熟练掌握基本功能那么接下来一些较为复杂的功能,比如最常用的密码功能,简单固定密码写法就是如下,密码为123456
复杂的可修改密码写法又相对来说复杂一些如下所示:
通过上面可以看出,无论代码的量和逻辑都增加了非常多,但是都是密码功能,其实就是从简单的功能块堆起来实现的,由数据库的读写来保存对比密码来替代了不可改写的固定密码,所以学习使用迪文屏时需要优先熟练基本功能,只有这样才能在接下来的复杂功能逻辑中如鱼得水,这次就先讲这么多,下次讲解86盒modbus的详细使用情况。