一种使通信终端实现手写笔迹信息交流的方法 【技术领域】
本发明涉及文字及图像信息的输入及信息交流的技术,是一种在通信终端进行手写笔迹输入(包括文字和图形)并经通信终端发送,由其它通信终端接收并重现手写笔迹,从而实现信息交流的方法。
背景技术
现有的通信终端按文字输入方式可归为两类,一类具有用笔手写输入方式,比如:摩托罗拉公司的388型手机,快译通公司的CECTE698商务手机。另一类为用按键输入,比如:诺基亚的3610型手机,摩托罗拉公司的720型手机,步步高的固定电话短信电话机HCD007TSD。现有的可用笔输入文字的通信终端,是通过对手写的字进行识别,而后选中最近地字来实现文字输入。这种文字输入方式与其它文字输入方式最终形成的代表文字内容的编码相同。其优点是采用笔手写方便。其缺点是需要较大的屏幕来显示与手写文字相关的字的信息,因而这种通信终端一般体积较大,都有一个大屏幕。并且手写的字要较为规矩方能实现高识别率,并且无法传送手画的图形。这种输入方式对通信终端的控制器有较高要求,要求通信终端控制器需增加完成手写的采样及识别,并需要一个相对于其它非手写识别输入的通信终端来说较大的手写识别数据库。由于通信终端控制器(比如手机控制器)大多需要处理的任务多,且与通信有关,因此是专用的控制器,要实现新增手写识别的功能较为困难。而要在具有手写识别的控制器中完成与通信有关的控制也是件困难的事情。现有大多数的通信终端比如手机采用的是按键输入的方式。这种方式的优点是体积小,成本低,较容易实现。其缺点是汉字输入比较烦琐。现有的通信终端舆文字信息的重要性日益提升。比如手机短信,已经成为年轻人使用手机的最重要的一种方式之一。
现有的若干种掌上电脑(也称个人数字助理或PDA)具有便笺记录的功能,比如商务通闪念822。这种方式记录的笔迹信息类似于微软视窗中的画图软件,是以画图的方式来记录的。只是用于其机器本身的一种信息记录,并无通信收发该信息的功能。也并不适合用于通信终端之间传送笔迹信息。
【发明内容】
为了通信终端用户更加方便地输入图形及文字信息,并使输入的图形及文字信息能方便于发送给其它通信终端,并在其它不同厂家生产的不同种类的不同结构的或对外形尺寸大小有较高要求的通信终端上重现这些信息。也为了通信终端制造商能以低的成本及较少的改动制造出具有笔迹输入、传送及重现功能的通信终端,本发明提出一种使通信终端实现手写笔迹信息交流的新方法。其特征在于:用透光的触摸屏代替在现有的通信终端的显示器件正面与外部之间的透光的材料,由一个触摸屏控制器控制触摸屏,进行手写笔迹数据的采集,并生成笔划矢量数据,根据需要由触摸屏控制器或通信终端的主控制器完成手写过程的实时显示;由通信终端的主控制器将包含有笔划矢量数据的笔迹矢量数据与现有的语音或图像或文字或其它数据的信息进行混合编辑存贮;当需要将笔迹信息传送到其它通信终端时,在通信终端的主控制器的控制下将包含有笔迹矢量数据的数据经由该通信终端所遵从的现有的传送图像或声音或文字或其它数据的方法发送出去;当通信终端依其所遵从的现有的接收图像或声音或文字或其它数据的方法收到包含有笔迹矢量数据的数据后,以现有方式存贮该信息;在需要显示该数据所包含的笔迹信息时,依据每个笔迹矢量数据重新画出每个笔迹,并据需要放大和缩小各个笔迹。
所述的透光的触摸屏作为手写笔迹的传感器,包含了当笔在触摸屏表面移动时,对水平方向和垂直方向的移动分量敏感的材料。
所述的触摸屏控制器具有相应电路通过一定时序给触摸屏提供驱动信号用于检测当笔在触摸屏表面移动时在水平方向和垂直方向的移动分量,并取得相应的笔迹某点的水平方向和垂直方向的坐标分量。所说的触摸屏控制器分析笔迹运动的位移矢量,产生笔划数据。当所述的触摸屏为电阻式透光触摸屏时,所述的触摸屏控制器至少包含有两路模拟到数字转换电路(A/D电路);具有当每次笔开始书写时产生中断的机制;至少具有4个引脚用于分别单独控制所控制的触摸屏的水平和垂直方向的一个引脚;当笔正在触摸屏上书写时,所述的触摸屏控制器采集任一点坐标的时序中至少包含有两次这样的流程:在时刻1,触摸屏控制器将触摸屏的方向1(水平方向或垂直方向)的某一引脚(设为引脚1)接固定的已知的高电平,该方向1的另一引脚(设为引脚2)接同样的固定的已知的高电平或接高阻抗。触摸屏控制器将触摸屏方向2(非方向1的方向)的两个引脚接高阻抗;在时刻2,触摸屏控制器通过模拟到数字的转换检测触摸屏方向2的一个引脚(设为引脚3)的电平;在时刻3,触摸屏控制器取得引脚3经模拟到数字的转换完成后的电平所对应的数值;在时刻4,判断引脚3的电平所对应的数值为这时水平方向和垂直方向完全导通所对应的引脚3应有的值吗?如果条件满足则:如果本点坐标还未采集完则继续采集,如果本点坐标已采集完则采集的坐标值有效。如果条件不满足则:本次采集该点坐标的值无效。须等待预设的一段时间间隔后重新采集。
所述的笔划矢量数据的生成方法是:当触摸屏控制器采集得笔迹的先后的两点坐标时,先存起来,并将第2点坐标存为最后坐标。当采集得第三点笔迹坐标后,计算第三点笔迹坐标与第一点笔迹坐标构成的位移矢量(设为矢量1)和第一点坐标与第二点坐标构成的位移矢量(设为矢量2),判断是否满足条件1:矢量1与矢量2的方向夹角小于预设的范围且矢量1的长度不小于矢量2的长度;如果满足该条件1则第三坐标存为最后坐标,等过一段时间后再继续采集新的一点坐标作为第三点坐标;如果不满足该条件1则过一段时间后采集第4点坐标,得到第4点坐标后,计算第4点坐标与第1点坐标构成的位移矢量(设为矢量3);判断是否满足条件2:矢量3与矢量1的方向夹角小于预设的范围且矢量1的长度不小于矢量3的长度;如果满足条件2则舍去第三点坐标将第4点坐标存为最后坐标,过一段预定的时间后再重新采集新的一点坐标作为第三点坐标;如果不满足条件2则将第1点和最后坐标构成的矢量作为已生成的一个笔划的矢量数据,将第三点坐标作为新的一个笔划的第一点坐标,将第四点坐标作为新的一个笔划的第二点坐标和最后坐标。如果采集到触摸屏水平方向与垂直方向不接触,则统计连续的不接触时间,如果该时间超过预设的间隔则将第一点坐标和最后坐标构成的矢量作为已生成的一个笔划的矢量,并设一个标志表示下一个采到的坐标为第一点坐标,如果连续的不接触时间大于另一设定的间隔则说明本次书写结束,重复上述过程可实现将一次书写过程的每个笔划的矢量数据采集得到。
所述的笔划矢量数据至少包含了该笔划的起点坐标和终点坐标。
所述的每个笔迹矢量数据包含有表示一次书写的笔迹的数据长度或笔划个数的数据段,包含有本次书写的每个笔划的笔划矢量数据。当所述的笔迹矢量数据以同一个数据段位置来表示前后两个笔划共用一点坐标时,则还包含有若干数据段用于表示每个后面的笔划是否与前面的笔划共用同一点坐标。当所说的笔迹矢量数据与现有的其它方式输入的现有的文字编码相混合时则所说的笔迹矢量数据至少包含有一个数据段用于表示这是新的特殊的文字码,以便依次读取这种混合的数据时区分现有的文字编码还是新的完整的笔迹矢量数据。当所说的笔迹矢量数据与现有的图像或声音或其它格式的数据相混合以便发送给其它通信终端,或者以现有的发送数据的方法发送笔迹矢量数据时,所说的每个笔迹矢量数据至少包含有一个数据段用于与现有的其它数据结构相区别。
所述的依据每个笔迹矢量数据重新画出每个笔迹,其方法是依次读取每个笔迹矢量数据所包含的每个笔划矢量数据,依据每个笔划矢量数据的起点和终点坐标,在要显示的位置上依据需显示的大小与整个笔迹的原大小或原边界的对应关系,计算出该笔划的起点和终点所对应的位置,并在该起点和终点所对应的位置间画一直线,将每个笔迹矢量数据所包含的每个笔划矢量数据依次按同样的方法画出直到全部画完为止。
由于本发明对所写的笔迹无需经过识别过程,需要显示的只是手写的笔迹,不需显示当有识别时需要的备选字,因此对通信终端显示屏大小无特别要求,方便于在现有的移动通信终端中实施,满足了人们对移动通信终端体积越小越好的要求。又因为省去了复杂的识别过程,因此速度快。本发明采用触摸屏来代替现有通信终端在显示器正面与外部之间现有的一层透光的保护性材料。在结构上与现有通信终端相同,更容易实施。触摸屏控制器在采集任一点坐标中至少特定的流程执行两遍可以防止一般的触摸屏容易出现的当在笔接触触摸屏时当触摸屏的水平方向和垂直方向的接触出现抖动时,触摸屏控制器采集到的坐标值不准确的现象。本发明所采用的笔迹矢量数据结构的优点是:(1)与通信终端的显示屏的点阵结构无关。对输入端的显示屏和触摸屏的大小无具体要求。方便于不同厂家生产的产品之间的正确重现笔迹。显示屏的点阵结构有横向和纵向之分。如果数据结构与点阵结构有关,要通用是很困难的。(2)在重现笔迹时可以方便的放大和缩小笔迹而不丢失信息。对复杂的字或图画只有通过这种方式才能在重现端看清笔迹的细节。(3)不仅可传文字笔迹,还可传图像笔迹。(4)数据量最小。因为只传一个直线笔划的两端的点坐标,而忽略了两点间的数据,因此大大减少了数据量。(5)本发明将每一次书写过程生成一个笔迹矢量数据,使一段手写文字所对应的每一个字可以类似标准的字代码一样是一个字对应一个笔迹矢量数据,又由于笔迹矢量数据方便于放大和缩小及显示,因此使手写笔迹数据可以像标准的字代码一样进行编辑和显示。
【附图说明】
图1:实例1在现有移动通信终端上所增加的电路图。
具体实施例1
以电阻式触摸屏作为采集手写笔迹的传感器,以NEC单片机UPD78F4216作为触摸屏控制器。电路图见图1。
UPD78F4316通过第40,41,42引脚与移动手机终端的主控制器相连。当需要手写笔迹输入时,主控制器通过UPD78F4216第40,41,42引脚通知UPD78F4216。UPD78F4216进入采集数据准备状态。当手写笔迹开始时,UPD78F4216开始采集。每次写完一个笔迹后,UPD78F4216将生成的笔迹矢量数据传给主控制器。主控制器则以类似标准文字的方式缩小显示所写笔迹并可以编辑。当全部所需要的笔迹写完后,主控制器存贮所得到的所有笔迹矢量数据。当需要以短信息发出手写笔迹信息时,主控制器将所存该次所得到的所有笔迹矢量数据以短信息的格式打包并发出。当所需发送的数据超过短信息所规定的长度时,依次读取每个完整的笔迹矢量数据,以短信息所允许的长度分次发出。当移动手机终端收到包含有笔迹矢量数据的短信息时存起来,当需要看时,依照数据的先后顺序,显示短信所包含的标准文字或标准图像或笔迹矢量数据。每个笔迹矢量数据也以标准字的大小进行显示。当需要时放大或缩小某个或多个完整的笔迹。
UPD78F4216的软件如下(共15个):
1、中断服务程序的地址设置: NAME aaaa extrn intstla,intp06,inttm6, inttm7,inttm8,intad verp14h cseg at 14h dw tointp06 verp1ch cseg at 1ch dw intst1 verp2eh cseg at 2eh dw tointad verp32h cseg at 32h dw tointtm6 verp34h cseg at 34h dw tointtm7 verp36h cseg at 36h dw tointtm8 cseg tointp06:mov !!0ffe3fh,#14h br !!intp06 reti intst1:br !!intstla reti tointad:mov !!0ffe3fh,#2eh br !!intad reti tointtm6:mov !!0ffe3fh,#32h br !!inttm6 reti tointtm7:mov !!0ffe3fh,#34h br !!inttm7 reti tointtm8:mov !!0ffe3fh,#36h br !!inttm8 reti tEND 2、生成手写边界数据程序: name abh8n public abh8z extrn inter1,inter4 extrn hxmax,hxmax2,hymax ,hymax2,hxmin,hxmin2,hymin ,hymin2,hlx0,hly0 abh8f equ 0ffd80h abh8xs equ 0ffd81h abh8ys equ 0ffd82h abh8px equ 0ffd83h abh8ax equ 0ffd84h abh8py equ 0ffd85h abh8ay equ 0ffd86h abh8xe equ 0ffd87h abh8ye equ 0ffd88h abh8fn equ 0ffd89h abh8k equ 0ffd8ah abh8x1 equ 0ffd8bh abh8x2 equ 0ffd8ch abh8y1 equ 0ffd8dh abh8y2 equ 0ffd8eh cseg abh8z:pushpsw sel rb2 mov a,#00h mov[%inter4],a call$!anz cmp x,#03h bnc $abh8_3 mov a,!!hxmax mov !!hxmax2,a mov a,!!hxmin mov !!hxmin2,a mov a,!!hymax mov !!hymax2,a mov a,!!hymin mov !!hymin2,a br $!abh8_4 abh8_3:mov a,!!hxmax sub a,!!hxmax2 mov x,a mov c,#03h call$!divm mov a,x add !!hxmax2,a mov a,!!hxmin2 sub a,!!hxmin mov x,a mov c,#03h call$!divm mov a,x sub !!hxmin2,a mov a,!hymax sub a,!!hymax2 mov x,a mov c,#03h call$!divm mov a,x add !!hymax2,a mov a,!!hymin2 sub a,!!hymin mov x,a mov c,#03h call$!divm mov a,x sub !!hymin2,aabh8_4:mov a,!!hxmax2 sub a,!!hxmin2 mov !!hlx0,a mov a,!!hymax2 sub a,!!hymin2 mov !!hly0,a mov abh8k,#01h call$!aqk call$!anz cmp x,#00h bnz $abh8_1 mov a,#01h mov [%inter4],a br $!abh8_retabh8_1: mov r6,abh8xs mov r7,abh8ys call$!abh8_t1 mov a,abh8f and a,x movgwhl,uup mov [whl],a mov r6,abh8xe mov r7,abh8ye call$!abh8_t1 mov a,abh8fn and a,x movgwhl,uup addgwhl,#09h mov [whl],a call$!anz cmp abh8k,x bc $abh8_29abh8_ret: pop psw retabh8_29:inc abh8k call$!aqk br $!abh8_1abh8_t1:mov r4,!!hxmin2 cmp r6,r4 bc $abh8_24 mov r5,!!hxmax2 cmp r6,r5 bnc $abh8 25 mov x,r6 sub x,r4 mov a,#03h mulux mov c,!!hlx0 divuw c inc x mov b,#04h sub b,x br $!abh8_2babh8_24:mov b,#03h br $!abh8_2b abh8_25:mov b,#01habh8_2b:mov r4,!!hymin2 cmp r7,r4 bc $abh8_26 mov r5,!!hymax2 cmp r7,r5 bnc $abh8_27 mov x,r7 sub x,r4 mov a,#03h mulux mov c,!!hly0 divuw c br $!abh8_28abh8_26:mov x,#00h br $abh8_28abh8_27:mov x,#02habh8_28:mov a,#03h mulux add x,b or x,#0f0h retaqk:movgwhl,inter1 movwax,[whl] cmpwax,#0200h bnc $aqk1 movgvvp,#00h mov a,abh8k dec a mov x,#0ah mulux movwvp,ax addgwhl,#02h addgwhl,vvp movguup,whl movgtde,#0ffd80h mov c,#0ah movbk [tde+],[whl+]aqk1: retanz: movgtde,inter1 movwax,[tde] mov c,#0ah divuw c ret divm: mov a,#00h divuw c ret End 3、笔划特征分析程序: name abh7n public abh7z extrn hwall,handwv2,lintprog ,wordsv,mintsp,handback, handwend extrn hxmax,hxmax2,hymax ,hymax2,hxmin,hxmin2 ,hymin,hymin2 extrn hxmaxk,hxmax2k ,hxmink,hxmin2k,hymaxk ,hymax2k,hymink,hymin2k abh7f equ 0ffd80h abh7xs equ 0ffd81h abh7ys equ 0ffd82h abh7px equ 0ffd83h abh7ax equ 0ffd84h abh7py equ 0ffd85h abh7ay equ 0ffd86h abh7xe equ 0ffd87h abh7ye equ 0ffd88h abh7fn equ 0ffd89h cseg abh7z: push psw sel rb2 mov !!hxmax,#00h mov !!hxmax2,#00h mov !!hymax,#00h mov !!hymax2,#00h mov !!hxmin,#0ffh mov !!hxmin2,#0ffh mov !!hymin,#0ffh mov !!hymin2,#0ffh abh7_1: ; br $!abh7_2 mov a,!!handwend cmp a,#00h bnz $abh7_1z mov a,#02h mov !!handback,a movwax,!!hwall cmpwax,#14h bc $abh7_1y mov a,#01h mov !!handback,a abh7_1y:call !!pulp2 br !!abh7_ret abh7_1z:movg whl,#abh72 call!!pulp br !!abh7_ret abh7_2: pushpsw sel rb2 call!!aqn cmp abh7f,#0ffh bnz $abh7_1 cmp abh7px,#00h bnz $abh7_21 cmp abh7py,#00h bnz $abh7_22 mov x,abh7ay mov c,#05h call$!divm cmp abh7ax,x bc $abh7_23 mov x,abh7ax mov c,#05h call$!divm cmp abh7ay,x bnc$abh7_24 mov a,#0cfh br $!abh7_25 abh7_24:mov a,#3fh br $!abh7_25 abh7_23:mov a,#4fh br $!abh7_25 abh7_22:mov a,#0efh br $!abh7_25 abh7_21:cmp abh7py,#00h bnz $abh7_26 mov x,abh7ay mov c,#05h call$!divm cmp abh7ax,x bc $abh7_23 mov x,abh7ax mov c,#05h call$!divm cmp abh7ay,x bc $abh7_27 mov a,#5fh br $!abh7_25 abh7_27:mov a,#2fh br $!abh7_25 abh7_26:mov x,abh7ay mov c,#05h call$!divm cmp abh7ax,x bnc $abh7_27 mov a,#0dfhabh7_25:movgwhl,uup mov [whl],aabh7_2a:mov r4,!!hxmax mov r5,!!hxmax2 cmp abh7px,#00h bnz $abh7_28 mov r6,abh7xs mov r7,abh7xe br $!abh7_214abh7_28:mov r6,abh7xe mov r7,abh7xsabh7_214: cmp r4,r7 bc $abh7_29 cmp r5,r7 bnc $abh7_210 mov r5,r7 mov !!hxmax2,r5 call$!anz mov !!hxmax2k,x br $!abh7_210abh7_29:mov r5,r4 mov !!hxmax2,r5 mov a,!!hxmaxk mov !!hxmax2k,a mov r4,r7 mov !!hxmax,r4 call$!anz mov !!hxmaxk,x cmp r5,r6 bnc $abh7_210 mov r5,r6 mov !!hxmax2,r5 call$!anz mov !!hxmax2k,xabh7_210:mov r4,!!hxmin mov r5,!!hxmin2 cmp r6,r4 bc $abh7_211 cmp r6,r5 bnc $abh7_212 mov r5,r6 mov !!hxmin2,r5 call$!anz mov !!hxmin2k,x br $!abh7_212abh7_211: mov r5,r4 mov !!hxmin2,r5 mov a,!!hxmink mov !!hxmin2k,a mov r4,r6 mov !!hxmin,r4 call$!anz mov !!hxmink,x cmp r7,r5 bnc $abh7_212 mov r5,r7 mov !!hxmin2,r5 call$!anz mov !!hxmin2k,xabh7_212: mov r4,!!hymax mov r5,!!hymax2 cmp abh7py,#00h bnz $abh7_213 mov r6,abh7ys mov r7,abh7ye br $!abh7_215abh7_213:mov r6,abh7ye mov r7,abh7ysabh7_215: cmp r4,r7 bc $abh7_216 cmp r5,r7 bnc $abh7_217 mov r5,r7 mov !!hymax2,r5 call$!anz mov !!hymax2k,x br $!abh7_217abh7_216:mov r5,r4 mov !!hymax2,r5 mov a,!!hymaxk mov !!hymax2k,a mov r4,r7 mov !!hymax,r4 call$!anz mov !!hymaxk,x cmp r5,r6 bnc $abh7_217 mov r5,r6 mov !!hymax2,r5 call$!anz mov !!hymax2k,xabh7_217:mov r4,!!hymin mov r5,!!hymin2 cmp r6,r4 bc $abh7_218 cmp r6,r5 bnc $abh7_3a mov r5,r6 mov !!hymin2,r5 call$!anz mov !!hymin2k,x br $!abh7_3aabh7_218: mov r5,r4 mov !!hymin2,r5 mov a,!!hymink mov !!hymin2k,a mov r4,r6 mov !!hymin,r4 call$!anz mov !!hymink,x cmp r7,r5 bnc $abh7_3a mov r5,r7 mov !!hymin2,r5 call$!anz mov !!hymin2k,xabh7_3a:movgwhl,uup addgwhl,#09h mov a,[whl] and a,#0f0h cmp a,#40h bz $abh7_31 mov a,!!handwend cmp a,#00h bnz $abh7_1a mov a,#01h mov !!handback,a br !!abh7_32abh7_1a:br $!abh7_1abh7_31:mov a,#00h mov !!handback,aabh7_32:call!!pulp2abh7_ret: pop psw retpulp:movg tde,#lintprog movgvvp,#00h mov r8,#handwv2 addg tde,vvp mov a,[tde] mov x,a inc a mov [tde],a mov a,#03h mulux movw rp4,ax addg tde,#02h addg tde,vvp movg[tde],whl retpulp2: movgtde,#mintsp mov a,[tde] movgvvp,#00h mov r8,a inc a mov [tde],a incgtde addgtde,vvp mov a,#wordsv mov [tde],a retaqn:movgwhl,#hwall movwax,[whl] cmpwax,#0200h bnc $aqn2 movgvvp,#00h movwvp,ax addgwhl,#02h addgwhl,vvp subgwhl,#0ah movguup,whl movgtde,#0ffd80h mov c,#0ah movbk [tde+],[whl+]aqn2: retanz: movgtde,#hwall movwax,[tde] mov c,#0ah divuw c retdivm: mov a,#00h divuw c ret End 4、AD采样程序:name adonenpublic adonezextrnaddrad,z_sys1flag,z_intflg3 csegadonez:push psw sel rb7 push tde mov tmic7,#01000011b mov tmc7,#00000111b clr1 pm0.4 set1 pm0.6 set1 pm9.4 clr1 pm0.3 clr1 pm0.5 clr1 p0.5 clr1 p0.4 clr1 p0.3 set1z_intflg3.1 clr1z_intflg3.2 mov adis,#00000110b nop nop nop nop nop nop nop nop nop nop mov adic,#00000000b mov adm,#10100000b movg tde,#0ffd57h movg addrad,tde set1 z_sys1flag,0 pop tdetoret:pop psw rettotm7:mov mic7,#00000000b mov tmc7,#10000000b mov prm7,#00000111b mov cr70,#3ah br !!toretend 5、手写笔迹打包程序: NAME apaknPUBLIC apakzextrn hwallapakjsq equ 0ffd8ah CSEGapakz: push psw sel rb2 mov apakjsq,#00h movgwhl,#hwall movwax,[whl] movwrp2,ax cmpwrp2,#0ah bnc $apak_4 br $!apak_ret apak_4:addgwhl,#02h movgtde,#0ffd80h mov c,#0ah movbk [tde+],[whl+] movgvvp,whl subwrp2,#0ah movguup,#hwall incguup movgwhl,#0ffcaffh movg[uup],whl addguup,#04h mov a,#70h mov[uup],a incguup movgwhl,#0ffd81h movgtde,uup mov c,#02h movbk [tde+],[whl+] addgwhl,#04h mov c,#02h movbk [tde+],[whl+] add apakjsq,#04h cmpwrp2,#0ah bc $apak_1 incgvvp apak_2: movgwhl,vvp subwrp2,#0ah add apakjsq,#04h mov c,#02h movbk [tde+],[whl+] addgwhl,#04h mov c,#02h movbk [tde+],[whl+] cmpwrp2,#0ah bc $apak_1 addgvvp,#0ah br $!apak_2 apak_1:add apakjsq,#09h mov a,apakjsq movgwhl,#hwall mov [whl],a addgwhl,#04h sub a,#05h mov [whhl],a mov r6,a mov b,#00h mov c,a apak_3: incgwhl mov a,[whl] mov x,a mov a,#00h addwbc,ax dec r6 cmp r6,#03h bnz $apak_3 incgwhl movwax,bc movw[whl],ax addgwhl,#02h movwax,#0ffffh movw[whl],ax apak_ret: pop psw ret END 6、求矢量程序: name asln public aslz extrn inget1,inget4,inget7 cseg aslz: push psw sel rb3 movgwhl,inget1 movgtde,inget4 movguup,inget7 mov a,[whl] mov b,a mov a,[tde] mov c,a mov a,[whl+1] mov x,a mov a,[tde+1] mov r4,a cmp c,b bc $asl_1 bnz $asl_2 cmp x,r4 bnc $asl_2 asl_1: mov a,#01h mov [uup],a mov a,b sub a,c incguup mov [uup],a br !!asl_5 asl_2: mov a,#00h mov [uup],a mov a,c sub a,b incguup mov [uup],a asl_5: cmp r4,x bc $asl_3 bnz $asl_4 cmp c,b bnc $asl_4 asl_3:mov a,#01h incguup mov [uup],a mov a,x sub a,r4 incguup mov [uup],a br !!asl_ret asl_4: mov a,#00h incguup mov[uup],a mov a,r4 sub a,x incguup mov [uup],a asl_ret:pop psw ret End 7、串口发送数据程序: NAME sendln public send1z,intstla extrn inter1,z_intflg4,z_intflg2,portnum,z_intflg1 senadd1 equ 0fe200h sencnt1 equ 0fe203h senflg equ 0fe204h cseg sendlz: push psw sel rb2 set1 z_intflg2.0 clrl z_intflg2.1 clr1 pm2.2 set1 p2.2 clr1 z_intflg1.5 add portnum,#1 mov brgc1,#00011010b mov csiml,#00000000b mov stic1,#00000011b movg whl,inter1 mov a,[whl] mov !!sencnt1,a incg whl set1 pm2.1 clr1 p2.1 clr1 pm2.1 mov a,[whl] incg whl movg !!senadd1,whl mov txsl,a pop psw ret intstla: sel rb7 push whl push ax push bc set1 pm2.1 clr1 p2.1 clr1 pm2.1 movg whl,!!senadd1 mov a,[whl] incg whl movg !!senaddl,whl mov c,!!sencnt1 dbnz c,$intst12 mov stic1,#01000011b set1 z_intflg1.5 clr1 p2.2 sub portnum,#1 mov !!senflg,#0ffh intst11:mov !!sencnt1,c pop bc pop ax pop whl reti intst12:mov txs1,a br !intst11 END 8、手写实时显示程序: NAME xhwd2nPUBLIC xhwd2zextrn inget1,inget2,inget3,inget4,inget5,lulz,lukz,xcldotzextrn hlcdx1,hlcdy1,hlcdx2,hlcdy2,lcdxyx,hax1,hax2,hay1,hay2,htx1,hty1,htx2,hty2 extrn lcd_dotlinmax ,lcd_dotvolmax,lintprog ,dothpv,oldlcdflag,x0,y0 CSEG xhwd2z: push psw sel rb2 mov !!inget1,#00h mov !!inget3,#hlcdx1 mov !!inget2,#hlcdy1 mov !!inget5,#hlcdx2 mov !!inget4,#hlcdy2 call !!xcldotz mov a,#lcd_dotlinmax sub a,#hlcdy1 bnc $xh1 br!!out xh1: inc a mov !!inget1,a mov a,#hlcdx1 cmp a,#lcd_dotvolmax bc$xh2 br!!out xh2: mov a,#hlcdx2 cmp a,#lcd_dotvolmax bz$xh3 bc$xh3 br!!out xh3:mov a,#hlcdy2 cmp a,#lcd_dotlinmax bz$xh4 bc$xh4 br!!out xh4:mov a,#hlcdx1 mov x,a add a,#03h xhloop1: cmp x,#hlcdx2 bc$xh9 br!!xh7 xh9: cmp a,#hlcdx2 bc$xh10 br!!xh5 xh10:mov inget2,x mov inget3,a call !!lukz add x,#06h add a,#04h cmp x,#h1cdx2 bc$xh6 br!!xh7 xh6: cmp a,#hlcdx2 bc$xh8 br!!xh5 xh8: mov inget2,x mov inget3,a call !!lukz add x,#04h add a,#06h br!!xhloop1 xh5: mov inget2,x mov inget3,#hlcdx2 call !!lukz xh7:mov a,#lcd_dotlinmax sub a,#hlcdy2 inc a mov inget1,a mov a,#hlcdx1 mov x,a add a,#03h xh1oop2: cmp x,#hlcdx2 bc$xh79 br!!xh77 xh79: cmp a,#hlcdx2 bc$xh710 br!!xh75 xh710: mov inget2,x mov inget3,a call !!lukz add x,#06h add a,#04h cmp x,#hlcdx2 bc$xh76 br!!xh77 xh76: cmp a,#hlcdx2 bc$xh78 br!!xh75 xh78: mov inget2,x mov inget3,a call !!lukz add x,#04h add a,#06h br!!xhloop2 xh75: mov inget2,x mov inget3,#hlcdx2 call !!lukz xh77: mov inget3,#hlcdx1 mov a,#lcd_dotlinmax sub a,#hlcdy1 inc a mov r7,a mov a,#lcd_dotlinmax sub a,#hlcdy2 inc a mov x,a add x,#03h xhloop3: cmp a,r7 bc$xh31 hr!!xh32 xh31: cmp x,r7 bc$xh33 br!!xh34 xh33:mov ingetl,a mov inget2,x call !!lulz add a,#06h add x,#04h cmp a,r7 bc$xh35 br!!xh32 xh35: cmp x,r7 bc$xh36 br!!xh34 xh36: mov inget1,a mov inget2,x call !!lulz add a,#04h add x,#06h br!!xhloop3 xh34: mov inget1,a mov inget2,r7 call !!lulz xh32: mov inget3,#h mov a,#lcd_dotlinm sub a,#hlcdy2 inc a mov x,a add x,#03h xhloop4: cmp a,r7 bc$xh41 br!!out xh41: cmp x,r7 bc$xh43 br!!xh44 xh43: mov inget1,a mov inget2,x call !!lulz add a,#06h add x,#04h cmp a,r7 bc$xh45 br!!xhd2 xh45: cmp x,r7 bc$xh46 br!!xh44 xh46: mov inget1,a mov inget2,x call !!lulz add a,#04h add x,#06h br!!xhloop4 xh44: mov inget1,a mov inget2,r7 call !!lulz xhd2: movg tde,#lintprog movg vvp,#00h mov r8,#dothpv addg tde,vvp mov a,[tde] mov x,a inc a mov [tde],a mov a,#03h mulu x movw rp4,ax addg tde,#02h addg tde,vvp movg whl,#xhd3 movg [tde],whl br!!out xhd3: push psw sel rb2 movw ax,!!lcdxyx movw rp3,ax cmp a,#hty1 bc$xpt5 cmp a,#hty2 bz$xpt3 bnc $xpt5 xpt3: cmp x,#htx2 bc$xpt5 cmp x,#htx1 bz$xpt4 bnc $xpt5 br!!xpt4 xpt5: br !!xhd2 xpt4: mov a,#htx1 sub a,r6 mov x,#hax2 mulu x mov c,#hax1 divuw c add x,#hlcdx1 cmp x,#h1cdx1 bc$xpt6 cmp x,#hlcdx2 bz$xpt1 bnc $xpt6 xpt1: mov r5,x mov a,r7 sub a,#hty1 mov x,#hay2 mulu x mov c,#hay1 divuw c add x,#hlcdy1 cmp x,#hlcdy1 bc$xpt6 cmp x,#hlcdy2 bz$xpt2 bc$xpt2 xpt6: br !!xhd2 xpt2: mov a,!!oldlcdflag cmp a,#00h bnz $xhdx1 call !!pdisp inc r5 call !!pdisp dec r5 mov !!x0,r5 mov !!y0,x mov !!oldlcdflag,#0ffh br!!xhd2 xhdx1:mov a,!!x0 cmp r5,a bnz $xhdx11 mov a,!!y0 cmp x,a bnz $xhdxll br!!xhd2 xhdx11:mov r6,x mov r7,r5 mov x,!!y0 ;mov r5,!!x0 ;call !!pdisp ;inc r5 ;call !!pdisp mov a,!!x0 cmp r7,a bc$xhdx2 mov b,r7 sub b,a br!!xhdx3 xhdx2: mov b,!!x0 sub b,r7 xhdx3: mov a,!!y0 cmp r6,a bc$xhdx4 mov c,r6 sub c,a br!!xhdx5 xhdx4:mov c,!!y0 sub c,r6 xhdx5: cmp b,c bnc $xhdx6 br!!xhd3a xhdx6: mov a,!!x0 cmp a,r7 bnc $xhd2c xhd2a: mov r4,#01h xhd2b: mov r5,!!x0 add r5,r4 mov a,!!y0 cmp a,r6 bc$xhd2b1 mov x,!!y0 sub x,r6 mov c,r7 mov a,!!x0 sub c,a mov a,r4 mulu x divuw c mov a,!!y0 sub a,x mov x,a br!!xhd2b2 xhd2b1: mov x,r6 mov a,!!y0 sub x,a mov c,r7 mov a,!!x0 sub c,a mov a,r4 mulu x divuw c mov a,!!y0 add a,x mov x,a xhd2b2: call !!pdisp inc r5 call !!pdisp dec r5 cmp r7,r5 bc$xhd2b3 inc r4 br!!xhd2b xhd2b3: mov !!x0,r7 mov !!y0,r6 br!!xhd2 xhd2c: mov r4,#01h xhd2d: mov r5,!!x0 sub r5,r4 mov a,!!y0 cmp a,r6 bc$xhd2c1 mov x,!!y0 sub x,r6 mov c,!!x0 sub c,r7 mov a,r4 mulu x divuw c mov a,!!y0 sub a,x mov x,a br!!xhd2c2 xhd2c1:mov x,r6 mov a,!!y0 sub x,a mov c,!!x0 sub c,r7 mov a,r4 mulu x divuw c mov a,!!y0 add a,x mov x,a xhd2c2: call ! !pdisp inc r5 call !!pdisp dec r5 cmp r5,r7 bc$xhd2c3 inc r4 br!!xhd2d xhd2c3:mov!!x0,r7 mov !!y0,r6 br!!xbd2 xhd3a:mov a,!!y0 cmp a,r6 bc$xhd3a1 br!!xhd3c xhd3a1: mov r4,#01h xhd3b: mov b,!!y0 add b,r4 mov a,!!x0 cmp a,r7 bc$xhd3b1 mov x,!!x0 sub x,r7 mov c,r6 mov a,!!y0 sub c,a mov a,r4 mulu x divuw c mov r5,!!x0 sub r5,x br!!xhd3b2 xhd3b1: mov x,r7 mov a,!!x0 sub x,a mov c,r6 mov a,!!y0 sub c,a mov a,r4 mulu x divuw c mov r5,!!x0 add r5,x xhd3b2: mov x,b call !!pdisp inc r5 call !!pdisp cmp r6,x bc$xhd3b3 inc r4 br!!xhd3b xhd3b3: mov!!x0,r7 mov !!y0,r6 br!!xhd2 xhd3c: mov r4,#01h xhd3d: mov b,!!y0 sub b,r4 mov a,!!x0 cmp a,r7 bc$xhd3c1 mov x,!!x0 sub x,r7 mov c,!!y0 sub c,r6 mov a,r4 mulu x divuw c mov r5,!!x0 sub r5,x br!!xhd3c2 xhd3c1: mov x,r7 mov a,!!x0 sub x,a mov c,!!y0 sub c,r6 mov a,r4 mulu x divuw c mov r5,!!x0 add r5,x xhd3c2:mov x,b call !!pdisp inc r5 call !!pdisp cmp x,r6 bc$xhd3c3 inc r4 br!!xhd3d xhd3c3:mov!!x0,r7 mov !!y0,r6 br!!xhd2 out: pop psw ret pdisp: mov a,#lcd_dotlinmax sub a,x inc a mov inget1,a mov inget2,r5 mov inget3,r5 call !!lukz ret END 9、坐标分断程序: NAME xodln PUBLIC xodlz extrn lintprog,lintsp extrn hwbuffer1, hwbuffer2,hwbuffer3, hwbuffer4,hwbuffer5, hwbuffer6,hwbuffer7, hwbuffer8,hwbuffer9, hwbuffer10,hwbuffer11, hwbuffer12,hwbuffer13, hwbuffer14,hwbuffer15, hwbuffer16,hwbuffer17, hwbuffer18,hwbuffer19, hwbuffer20,hwbuffer21 extrn hwbuffer22, hwbuffer23,hwbuffer24, hwbuffer25,hwbuffer26, hwbuffer27,hwbuffer28 extrn hwbuffer29, hwbuffer30,hwbuffer31, hwbuffer32,hwbuffer33 ,hwbuffer34,hwbuffer35 extrn hwbuffer36, hwbuffer37,hwbuffer38, hwbuffer39,hwbuffer40 extrn inget1,inget2, inget4,inget7 extrn handwv,bdx0, bdx2,bdy0,bdy2,handwv2, xmax1,ymax1,xmax2 ,ymax2,hwall,dothpv, handwv3 extrn z_intflg1,lcdxyx, z_intflg3 extrn abh7z,adonez,aslz, xtm6z,xtm8z,xvtcz,xvtmz, xhwd2z,oldlcdflag extrn hwtm1,hwtm2, handwend,ang30min, xmax3,ymax3,z_sys4flag CSEG xod1z: push psw sel rb5 xdl: set1 z_intflg3.4 setlz_sys4flag.2 clr1 egp0.6 clr1 egn0.6 set1 pm0.6 mov pic6,#40h movw !!hwall,#0000h movg whl,#l intprog mov a,#dothpv mov b,a mov a,#00h mov [whl+b],a mov !!hwbu ffer36,#00h mov !!hwbuffer1,#00h mov !!hwbuffer2,#0fdh mov !!hwbuffer3,#0ffh mov !!oldlcdflag,#00h mov !!handwend,#0ffh call !!abh7z call !!xhwd2z movg whl,#xd2 call !!pulp set1 egp0.6 clr1 egn0.6 set1 pm0.6 mov pic6,#00h br!!out xd12: br !!xdbb5 xd2: push psw sel rb5 movw ax,!!lcdxyx cmpw ax,#0ffffh bz$xd12 cmp a,#bdy0 bc$xdi1 cmp a,#bdy2 bz$xdi2 bnc $xdi1 xdi2: cmp c,#bdc0 bc$xdi1 cmp x,#bdx2 bz$xdi3 bnc $xdi1 br!!xdi3 xdi1: mov a,#0fdh cmp a,!!hwbuffer2 bz$xdi122 mov a,#0f9h cmp a,!!hwbuffer2 bnz $xdi12 br!!xd13 xdi122: mov !!hwbuffer2,#0f9h br !!xdbb5 xdi12: cmp hwtm2,#0ffh bz$xdi11 br!!xdbb5 xdi11: bf !!hwbuffer2.0,$xdi111 clr1 !!hwbuffer2.0 br!!xdbb5 xdi111: br !!xd13 xdi3: set1 !!hwbuffer2.0 mov !!hwbuffer1,#08h mov !!hwhuffer2,#0ffh mov !!hwbuffer8,x mov !!hwbuffer9,a call !!pdot xdaa2:mov !!hwbuffer36,#00h xdaa:mov !!inget1,#01h movg whl,#xd3 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xd3: push psw sel rb5 bfp0.6,$xdaa1 movg whl,#xd4 call !!pulp call !!adonez; br!!out xdaal: mov a,!!hwbuffer36 inc a mov !!hwbuffer36,a mov x,#hwtm1 inc x cmp a,x bc$xdaa1i1 br!!xdbb5 xdaa1i1: cmp a,#hwtm1 bc$xdi31 mov a,!!hwbuffer1 cmp a,#09h bnc $xdaa3 mov r7,#0fh call !!hwset mov !!oldlcdflag,#00h br!!xdaa5 xdi31:mov !!inget1,#01h movg whl,#xd3 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xdaa3: mov r7,#0ffh mov r6,#0fh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer14 movw rp1,ax movg whl,#hwbuffer4 call !!phwall mov !!oldlcdflag,#00h xdaa5:mov!!hwbuffer1,#00h mov !!hwbuffer2,#0ffh; mov !!hwbuffer3,#0ffh; call !!phw3 call !!phw2 br!!xdbb5 xdaa4: mov a,!!hwbuffer36 cmp a,hwtm2 bnc $xdaa4i1 mov !!inget1,#01h movg whl,#xd3 movg !!inget2,whl call !!xtm8z call !!phw3 br!!out xdaa4i1:mov a,!!hwbuffer1 cmp a,#09h bnc $xdaa41 movg whl,#hwall movw ax,[whl] cmpw ax,#00h bnz $xdaa42 br!!xd1 xdaa42: mov r7,#04fh call !!hwset br!!xdaa43 xdaa41: mov r7,#0ffh mov r6,#4fh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer14 movw rp1,ax movg whl,#hwbuffer4 call !!phwall mov !!oldlcdflag,#00h xdaa43: call!!phw3 call !!phw2 br!!out xldaa:br !!xdaa xd4:push psw sel rb5 movw ax,!!lcdxyx cmpw ax,#0ffffh bz$xldaa cmp a,#bdy0 bc$xd41 cmp a,#bdy2 bz$xd42 bnc $xd11 xd42: cmp x,#bdx0 bc$xd41 cmp x,#bdx2 bz$xd43 bnc $xd41 br!!xd43 xd41: cmp hwtm2,#0ffh bnz $xd411 bf!!hwbuffer2.0,$xd412 clr1 !!hwbuffer2.0 br!!xdaa xd412: br !!xd13 xd411: br !!xdaa xd43: set1 !!hwbuffer2.0 movg whl,#hwbuffer8 movg inget1,whl movg whl,#lcdxyx movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz movg whl,#hwbuffer37 movg tde,#hwbuffer4 mov c,#04h movbk [tde+],[whl+] movw ax,!!lcdxyx movw !!hwbuffer14,ax mov a,!!hwbuffer38 cmp a,#xmax1 bnc $xd44 mov a,!!hwbuffer40 cmp a,#ymax1 bnc $xd44 br !!xdaa2 xd44:mov a,!!hwbuffer38 cmp a,#xmax3 bnh $xd441 br!!xdaa2 xd441:mov a,!!hwbuffer40 cmp a,#ymax3 bnh $xdaa7 br!!xdaa2 xdaa7: movw ax,!!lcdxyx movw !!hwbuffer14,ax mov !!hwbuffer1,#0eh call !!pdot movg tde,#hwbuffer10 movg whl,#hwbuffer37 mov c,#04h movbk[tde+],[whl+] mov a,!!hwbu ffer38 cmp a,#xmax2 bnc $xdaa71 mov a,!!hwbu ffer40 cmp a,#ymax2 bnc $xdaa71 br!!xdaa2 xdaa71:clr1!!hwbuffer2.7 movg tde,#hwbu ffer4 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] xdbb2: mov !!hwbuffer36,#00h xdbb:mov !!inget1,#01h movg whl,#xd5 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xd5: push psw sel rb5 bfp0.6,$xdbb1 movg whl,#xd6 call !!pulp call !!adonez br!!out xdbb1: mov a,!!hwbuffer36 inc a mov !!hwbuffer36,a cmp a,#hwtm1 bc$xd51 mov r7,#0ffh mov r6,#0fh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer14 movw rp1,ax movg whl,#hwbuffer4 call !!phwall mov !!oldlcdflag,#00h ; mov !!hwbuffer1,#00h mov !!hwbuffer2,#0ffh mov !!hwbuffer3,#0ffh call !!phw3 call !!phw2 xdbb5:mov !!inget1,#01h movg whl,#xd52 movg !!inget2,whl call !!xtm8z call !!phw3 br!!out xd51: mov !!inget1,#01h movg whl,#xd5 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xd52: push psw sel rb5 bfp0.6,$xd521 movg whl,#xd2 call !!pulp call !!adonez; br!!out xd521:cmp hwtm2,#0ffh bnz $xd5211 br!!xdbb5 xd5211: mov a,!!hwbuffer36 inc a mov !!hwbuffer36,a cmp a,hwtm2 bnc $xd522 br!!xdbb5 xd522: movg tde,#hwall movw ax,[tde] cmpw ax,#00h bnz $xd5221 br!!xd5222 xd5221: movg vvp,#00h movw rp4,ax addg tde,#02h addg tde,vvp decg tde mov a,[tde] and a,#3fh add a,#40h mov [tde],a xd5222: mov !!oldlcdflag,#00h mov !!handwend,#00h call !!phw3 call !!phw2 br!!out xldbb: br !!xdbb xd6: push psw sel rb5 movw ax,!!lcdxyx cmpw ax,#0ffffh bz$xldbb cmp a,#bdy0 bc$xd61 cmp a,#bdy2 bz$xd62 bnc $xd61 xd62: cmp x,#bdx0 bc$xd61 cmp x,#bdx2 bz $xd63 bnc $xd61 br!!xd63 xd61: cmp hwtm2,#0ffh bz$xd611 br!!xdbb xd611: bf !!hwbuffer2.0,$xd6111 clr1 !!hwbuffer2.0 br!!xdbb xd6111: br !!xd13 xd63: set1 !!hwbuffer2.0 movg whl,#hwbuffer14 movg inget1,whl movg whl,#lcdxyx movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz mov a,!!hwbuffer38 cmp a,#xmax1 bnc $xd64 mov a,!!hwbuffer40 cmp a,#ymax1 bnc $xd64 br!!xdbb2 xd64: mov a,!!hwbuffer38 cmp a,#xmax3 bnh $xd641 br!!xdbb2 xd641: mov a,!!hwbuffer40 cmp a,#ymax3 bnh $xdbb6 br !!xdbb2 xdbb6:call!!pdot movw ax,!!lcdxyx movw !!hwbuffer20,ax movg tde,#hwbuffer16 movg whl,#hwbuffer37 mov c,#04h movbk[tde+],[whl+] mov a,!!hwbuffer1 add a,#06h mov !!hwbuffer1,a movg whl,#hwbuffer4 movg !!inget1,whl movg whl,#hwbuffer16 movg !!inget4,whl movg whl,#hwbuffer35 movg !!inget7,whl call !!xvtcz mov a,!!hwbuffer35 cmp a,#00h bz$xdbb61 cmp a,#01h bnz $xdbb62 clr1 !!hwbuffer3.0 br!!xdcc2 xdbb62: cmp a,#0e1h bnz $xdbb63 clr1 !!hwbuffer3.7 br!!xdbb61 xdbb63: cmp a,#0e2h bnz $xdbb6i1 clr1 !!hwbuffer3.6 br!!xdbb61 xdbb6i1:cmp a,#0e8h bnz $xdbb6i2 bt !!hwbuffer2.6,$xdbb61 bf !!hwbuffer2.5,$xdbb61 clr1 !!hwbuffer3.0 br!!xdbb61 xdbb6i2:cmp a,#0e3h bnz $xdbb61 clr1 !!hwbuffer3.0 xdbb61: movg whl,#hwbuffer8 movg inget1,whl movg whl,#hwbuffer20 movg inget4,whl movg whl,#hwbuffer10 movg inget7,w hl call !!aslz movg whl,#hwbuffer4 movg !!inget1,whl movg whl,#hwbuffer10 movg !!inget4,whl movg whl,#hwbuffer35 movg !!inget7,whl call !!xvtmz mov a,!!hwbuffer35 cmp a,#00h bz$xdcc2 cmp a,#01h bnz $xdbb66 set 1 !!hwbuffer2.5 clr 1 !!hwbuffer2.6 br!!xdcc2 xdbb66:cmp a,#02h bnz $xdbb67 set1 !!hwbuffer2.6 clr1 !!hwbuffer2.5 br!!xdcc2 xdbb67:cmp a,#03h bnz $xdcc2 clr1 !!hwbuffer3.0 xdcc2: mov !!hwbuffer36,#00h xdcc: mov !!inget1,#01h movg whl,#xd7 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xd7: push psw sel rb5 bfp0.6,$xdcc1 movg whl,#xd8 call !!pulp call !!adonez; br!!out xdcc1:mov a,!!hwbuffer36 inc a mov !!hwbuffer36,a cmp a,#hwtm1 bc$xdccll mov r7,#0ffh mov r6,#0fh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer20 movw rp1,ax movg whl,#hwbuffer10 call !!phwall mov !!oldlcdflag,#00h mov !!hwbuffer1,#00h mov !!hwbuffer2,#0ffh mov !!hwbuffer3,#0ffh call !!phw3 call !!phw2 br!!xdbb5 xdcc11:mov !!inget1,#01h movg whl,#xd7 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xldcc: br !!xdcc xd8: push psw sel rb5 movw ax,!!lcdxyx cmpw ax,#0ffffh bz$xldcc cmp a,#bdy0 bc$xd81 cmp a,#bdy2 bz$xd82 bnc $xd81 xd82: cmp x,#bdx0 bc$xd81 cmp x,#bdx2 bz$xd83 bnc $xd81 br!!xd83 xd81:cmp hwtm2,#0ffh bnz $xd811 bf!!hwbuffer2.0,$xd812 clr1 !!hwbuffer2.0 br !!xdcc xd812: br !!xd14 xd811: br !!xdcc xd83: set1 !!hwbuffer2.0 movg whl,#hwbuffer20 movg inget1,whl movg whl,#lcdxyx movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz mov a,!!hwbuffer38 cmp a,#xmax1 bnc $xd84 mov a,!!hwbuffer40 cmp a,#ymax1 bnc $xd84 br!!xdcc xd84:mov a,!!hwbuffer38 cmp a,#xmax3 bnh $xd841 br!!xdcc xd841:mov a,!!hwbuffer40 cmp a,#ymax3 bnh $xd831 br!!xdcc xd831: movg tde,#hwbuffer22 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] call !!pdot movw ax,!!lcdxyx movw !!hwbuffer26,ax mov a,!!hwbuffer1 add a,#06h mov !!hwbuffer1,a bt !!hwbuffer3.0,$xdcc4 br !!xde1 xdcc4:movg whl,#hwbuffer8 movg inget1,whl movg whl,#hwbuffer26 movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz movg whl,#hwbuffer10 movg !!inget1,whl movg whl,#hwbuffer37 movg !!inget4,whl movg whl,#hwbuffer35 movg !!inget7,whl call !!xvtmz mov a,!!hwbuffer35 cmp a,#00h bnz $xdcc41 xdcc42: br !!xddd3 xdcc41:cmp a,#01h bnz $xddd1 bf !!hwbuffer2.4,$xdcc42 xddd2: bt !!hwbuffer2.6,$xdcc43 xdcc44:clr1 !!hwbuffer2.6 set1 !!hwbuffer2.5 br!!xddd3 xdcc43: bt !!hwbuffer2.5,$xdcc44 clr1 !!hwbuffer2.4 br!!xddd3 xddd1:cmp a,#02h bnz $xddd3i1 bt !!hwbuffer2.4,$xddd11 br !!xddd3 xddd11: bf !!hwbuffer2.6,$xddd12 xddd13:set1 !!hwbuffer2.6 clr1 !!hwbuffer2.5 br!!xddd3 xddd12: bf !!hwbuffer2.5,$xddd13 clr1 !!hwbuffer2.4 br!!xddd3 xddd3i1: clr1 !!hwbuffer3.0 xddd3: movg whl,#hwbuffer10 movg !!inget1,whl movg whl,#hwbuffer22 movg !!inget4,whl movg whl,#hwbuffer35; movg !!inget7,whl call !!xvtcz mov a,!!hwbuffer35 cmp a,#00h bnz $xddd31 movg tde,#hwbuffer10 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] br!!xddd4 xddd31:cmp a,#01h bnz $xddd32 clr1 !!hwbuffer3.0 br!!xde2 xddd32: movg tde,#hwbuffer10 movg whl,#hwbuffer37 mov c,#04h movbk[tde+],[whl+] cmp a,#0e1h bnz $xddd33 clr1 !!hwbuffer3.7 br!!xddd5 xddd33:cmp a,#0e2h bnz $xddd34 clr1 !!hwbuffer3.6 br!!xddd5 xddd34:cmp a,#0f3h bnz $xddd35 bf !!hwbuffer3.7,$xddd36 bf !!hwbuffer3.1,$xddd36 br!!xddd5 xddd36:clr1 !!hwbuffer3.3 br!!xddd5 xddd35:cmp a,#0f4h bnz $xdp8a bf !!hwbuffer3.6,$xddd37 bf !!hwbuffer3.2,$xddd37 br!!xddd5 xdp8a:cmp a,#0e8h bnz $xdp8a1 bt !!hwbuffer2.6,$xddd5 bf !!hwbuffer2.5,$xddd5 clr1 !!hwbuffer3.0 br!!xde2 xdp8a1:cmp a,#0e3h bnz $xddd5 clr1 !!hwbuffer3.0 br!!xde2 xddd37:clr1 !!hwbuffer3.3 br!!xddd5 xddd4: bt !!hwbuffer3.7,$xddd41 clr1 !!hwbuffer3.1 br!!xddd5 xddd41: bt !!hwbuffer3.6,$xddd5 clr1 !!hwbuffer3.2 xddd5: movg tde,#hwbuffer14 call !!hbdel br!!xdcc2 xde1:movg whl,#hwbuffer14 movg inget1,whl movg whl,#hwbuffer26 movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz movg whl,#hwbuffer4 movg !!inget1,whl movg whl,#hwbuffer22 movg !!inget4,whl movg whl,#hwbuffer35 movg !!inget7,whl call !!xvtcz mov a,!!hwbuffer35 cmp a,#01h bz$xdell cmp a,#0e1h bnz $xde12 clr1 !!hwbuffer3.7 br!!xde13 xde12:cmp a,#0e2h bz$xde14 cmp a,#0e8h bz$xde112 cmp a,#0e3h bz$xde112 br!!xde13 xde14:clr1 !!hwbuffer3.6 br !!xde13 xde11: bf !!hwbuffer2.6,$xde111 xde112:mov r7,#0ffh br!!xde113 xde111: bf !!hwbuffer2.5,$xde112 bf !!hwbuffer2.4,$xde112 bf !!hwbuffer3.3,$xde112 bf !!hwbuffer3.1,$xde114 bt !!hwbuffer3.2,$xde112 mov r7,#0ffh br!!xde113 xde114:mov r7,#0ffh xde113:mov r6,#0cfh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer14 movw rp1,ax movg whl,#hwbuffer4 call !!phwall br!!xddd6 xde13:set1 !!hwbuffer3.0 movw ax,!!hwbuffer26 movw !!hwbuffer20,ax movg tde,#hwbuffer16 movg whl,#hwbuffer22 mov c,#04h movbk [tde+],[whl+] mov a,!!hwbuffer1 sub a,#06h mov !!hwbuffer1,a br!!xdcc2 xddd6: call !!phw3 call !!phw2 mov !!hwbuffer2,#0ffh mov !!hwbuffer3,#0ffh movw ax,!!hwbuffer14 movw !!hwbuffer8,ax movw ax,!!hwbuffer26 movw !!hwhuffer14,ax movg tde,#hwbuffer4 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] movg tde,#hwbuffer10 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] mov !!hwbuffer1,#0eh mov a,!!hwbu ffer38 cmp a,#xmax2 bnc $xddd61 mov a,!!hwbuffer40 cmp a,#ymax2 bnc $xddd61 br!!xdaa2 xddd61: clr1 !!hwbuffer2.7 br!!xdbb2 xde2:mov !!hwbuffer36,#00h xde4:mov !!inget1,#01h movg whl,#xd9 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xd9:push psw sel rb5 bfp0.6,$xde5 movg whl,#xd10 call !!pulp call !!adonez; br!!out xde5:mov a,!!hwbuffer36 inc a mov !!hwbuffer36,a cmp a,#hwtm1 bnc $xde6 mov !!inget1,#01h movg whl,#xd9 movg !!inget2,whl call !!xtm6z call !!phw3 br!!out xde6:bf !!hwbuffer2.6,$xde61 xde62:mov r7,#0ffh br!!xde63 xde61: xde63:mov r6,#0fh xd164: movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer20 movw rp1,ax movg whl,#hwbuffer10; call !!phwall call !!phw3 call !!phw2 mov !!oldlcdflag,#00h mov !!hwbuffer1,#00h mov !!hwbuffer2,#0ffh xdl63:mov !!hwbuffer3,#0ffh br!!xdbb5 xlde4:br !!xde4 xd10: push psw sel rb5 movw ax,!!lcdxyx cmpw ax,#0ffffh bz$xlde4 cmp a,#bdy0 bc$xd101 cmp a,#bdy2 bz$xd102 bnc $xd101 xd102:cmp x,#bdx0 bc$xd101 cmp x,#bdx2 bz$xd103 bnc $xd101 br!!xd103 xd101:cmp hwtm2,#0ffh; bnz $xd1011 bf!!hwbuffer2.0,$xd1012 clr1 !!hwbuffer2.0 br!!xde2 xd1012: br !!xd14 xd1011: br !!xde2 xd103:set1 !!hwbuffer2.0 movg whl,#hwbuffer26 movg inget1,whl movg whl,#lcdxyx movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz mov a,!!hwbuffer38 cmp a,#xmax1 bnc $xd104 mov a,!!hwbuffer40 cmp a,#ymax1 bnc $xd104 br!!xde2 xd104: mov a,!!hwbuffer38 cmp a,#xmax3 bnh $xd1041 br!!xde2 xd1041: mov a,!!hwbuffer40 cmp a,#ymax3 bnh $xd1031 br!!xde2 xd1031: mov a,!!hwbuffer1 add a,#06h mov !!hwbuffer1,a movw ax,!!lcdxyx movw !!hwbuffer32,ax movg tde,#hwbuffer28 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] call !!pdot xde7:movg whl,#hwbuffer20 movg inget1,whl movg whl,#hwbuffer32 movg inget4,whl movg whl,#hwbuffer37 movg inget7,whl call !!aslz movg whl,#hwbuffer10 movg !!inget1,whl movg whl,#hwbuffer37 movg !!inget4,whl movg whl,#hwbuffer35 movg !!inget7,whl call !!xvtcz mov a,!!hwbuffer35 cmp a,#00h bnz $xd10i1 xd10i8:set1!!hwbuffer3.0 movw ax,!!hwbuffer32 movw !!hwbuffer26,ax movg tde,#hwbuffer22 movg whl,#hwbuffer37; mov c,#04h movbk [tde+],[whl+] mov a,!!hwbuffer1 sub a,#06h mov !!hwbuffer1,a br!!xdcc4 xd10i1: cmp a,#01h bz$xd10i7 cmp a,#0e8h bnz $xd10i11 bt !!hwbuffer2.6,$xd10i8 bf !!hwbuffer2.5,$xd10i8 br!!xd10i3 xd10i11:cmp a,#0e3h bnz $xd10i8 br!!xd10i3: xd10i7:bf !!hwbuffer2.6,$xd10 i2 xd10i3:mov r7,#0ffh br!!xd10i5;ldy020501 xd10i2:bf !!hwbuffer2.5,$xd10 i3 bf !!hwbuffer2.4,$xd10i3 bf !!hwbuffer3.3,$xd10i3 bf !!hwbuffer3.1,$xd10i4 bt !!hwbuffer3.2,$xd10i3 mov r7,#0ffh br!!xd10i5 xd10i4: mov r7,#0ffh xd10i5: mov r6,#0cfh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer20 movw rp1,ax movg whl,#hwbuffer10 call !!phwall call !!phw3 call !!phw2 mov !!hwbuffer2,#0ffh mov !!hwbuffer3,#0ffh movw ax,!!hwbuffer20 movw !!hwbuffer8,ax movw ax,!!hwbuffer32 movw !!hwbuffer14,ax movg tde,#hwbuffer4 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] movg tde,#hwbuffer10 movg whl,#hwbuffer37 mov c,#04h movbk [tde+],[whl+] mov !!hwbuffer1,#0eh mov a,!!hwbuffer38 cmp a,#xmax2 bnc $xd10i6 mov a,!!hwbuffer40 cmp a,#ymax2 bnc $xd10i6 br!!xdaa2 xd10i6:clr1 !!hwbuffer2.7 br!!xdbb2 xd13: mov a,!!hwbuffer1 cmp a,#09h bnc $xd131 movw ax,!!hwall cmpw ax,#00h bz$xd132 movg vvp,#00h movw rp4,ax movg tde,#hwall addg tde,#02h addg tde,vvp decg tde mov a,[tde] cmp a,#0cfh bz$xd133 and a,#3fh add a,#40h br!!xd132 xd133:mov a,#4fh mov [tde],a xd132: set1!!z_intflg1.0 mov !!handwend,#00h call !!phw3 call !!phw2 br!!out xd131: mov r7,#0ffh mov r6,#4fh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer14 movw rp1,ax movg whl,#hwbuffer4 call !!phwall xd1311: mov !!hwbuffer1,#00h mov !!hwbuffer2,#0ffh mov !!hwbuffer3,#0ffh br!!xd132 xd14:mov r7,#0ffh mov r6,#4fh movw ax,!!hwbuffer8 movw rp2,ax movw ax,!!hwbuffer14 movw rp1,ax movg whl,#hwbuffer10 call !!phwa11 mov !!oldlcdflag,#00h br!!xd1311 out: pop psw ret pulp: movg tde,#lintprog movg vvp,#00h mov r8,#handwv addg tde,vvp mov a[tde] mov x,a inc a mov [tde],a mcv a,#03h mulu x movw rp4,ax addg tde,#02h addg tde,vvp movg [tde],whl ret hwset: movg tde,#hwall movw ax,[tde] cmpw ax,#00h bnz $ht2 br!!htout ht2: movg vvp,#00h movw rp4,ax addg tde,#02h addg tde,vvp decg tde mov a,r7 mov [tde],a htout: ret phwall:movg tde,#hwall movw ax,[tde] cmpw ax,#0200h bnc $phwall2 movg vvp,#00h movw rp4,ax addw ax,#0ah movw [tde],ax; addg tde,#02h addg tde,vvp mov a,r7 mov [tde],a incg tde movw ax,rp2 movw [tde],ax addg tde,#02h movw ax,rp1 mov c,#04h movbk [tde+],[whl+] movw [tde],ax addg tde,#02h mov a,r6 mov [tde],a ret phwall2:ret phw2:movg tde,#lintsp mov a,[tde] movg vvp,#00h mov r8,a inc a mov [tde],a incg tde addg tde,vvp mov a,#handwv2 mov [tde],a ret pdot: movg tde,#lintsp mov a,[tde] movg vvp,#00h mov r8,a inc a mov [tde],a incg tde addg tde,vvp mov a,#dothpv mov [tde],a ret hbdel: mov a,!!hwbuffer1 movg vvp,#00h mov r8,a sub a,#06h mov !!hwbuffer1,a movg whl,#hwbuffer2 addg vvp,whl movg whl,tde addg whl,#06h subg vvp,whl mov c,r8 movbk [tde+],[whl+] ret phw3: movg tde,#lintsp mov a,[tde] movg vvp,#00h mov r8,a inc a mov [tde],a incg tde addg tde,vvp mov a,#handwv3; mov [tde],a; ret END 10、TM6中断服务程序: NAME xtm6n PUBLIC xtm6z,inttm6 extrn inget1,tm6hpv, tm6prog,lintprog,lintsp, tm6flag CSEG xtm6z: push psw sel rb3 push ax push rp1 push tde push vvp push whl call !!ptp mov a,!!tm6flag cmp a,#0ffh bnz $out mov !!tm6flag,#00h mov cr60,#3ah mov prm6,#07h mov tmic6,#00h mov tmc6,#80h out: pop whl pop vvp pop tde pop rp1 pop ax pop psw ret inttm6: sel rb7 push ax push rp1 push rp2 push rp3 push whl push vvp push tde push uup movg whl,sp addg whl,#14h movg tde,#0ffaa0h mov c,#04h movbk [tde+],[whl+] movg uup.#tm6prog mov a,[uup] cmp a,#00h bnz $t8 br!!t2 t8: mov r7,a mov r6,#00h mov r5,#00h incg uup t7:mov a,[uup] dec a cmp a,#00h bnz $t3 incg uup movg whl,[uup] call !!plp decg uup movg tde,uup call !!del mov r5,#0ffh; call !!pls br!!t4 t3: mov[uup],a addg uup,#04h dec r7 t4:cmpr7,#00h bz$t5 br!!t7 t5: movg whl,#tm6prog mov a,[whl] sub a,r6 mov [whl],a cmp r5,#0ffh bz$t6 br!!tout t6: movg uup,#tm6prog mov a,[uup] cmp a,#00h bz$t2 br!!tout t2: mov!!tm6flag,#0ffh clr1 tmc6.7 set1 tmic6.6 tout: pop uup pop tde pop vvp pop whl pop rp3 pop rp2 pop rp1 pop ax reti ptp: movg tde,#tm6prog mov a,[tde] mov x,a inc a mov [tde],a mov a,#04h mulu x movg vvp,#00h movw rp4,ax incg tde addg tde,vvp mov c,#04h movg whl,#inget1 movbk [tde+],[whl+] ret del: dec r7 cmp r7,#00h bz$dout mov a,r7; mov x,#04h mulu x movg whl,tde addg whl,#04h mov c,x cmp c,#00h bz $d1 movbk [tde+],[whl+] d1: cmp a,#00h bz$dout mov c,#0ffh movbk [tde+],[whl+] dec a br!!d1 dout: inc r6 ret plp: movg tde,#lintprog movg vvp,#00h mov a,#tm6hpv mov r8,a addg tde,vvp mov a,[tde] inc a; mov [tde],a dec a mov x,#03h mulu x movw rp4,ax addg tde,vvp addg tde,#02h; movg vvp,whl movg whl,[tde] addg tde,#03h; movg [tde],whl movg whl,vvp subg tde,#03h movg [tde],whl ret pls: movg tde,#lintsp movg vvp,#00h mov a,[tde] mov r8,a inc a mov [tde],a incg tde addg tde,vvp mov a,[tde] incg tde mov [tde],a decg tde mov a,#tm6hpv mov [tde],a ret END 11、TM8中断服务程序: NAME xtm8n PUBLIC xtm8z,inttm8 extrn inget1,tm8hpv ,tm8prog,lintprog,lintsp,tm8f lag CSEG xtm8z: push psw sel rb3 push ax push rp1 push tde push vvp push whl call !!ptp mov a,!!tm8flag cmp a,#0ffh bnz $out mov !!tm8flag,#00h mov cr80,#80h mov prm8,#07h mov tmic8,#00h mov tmc8,#80h out: pop whl pop vvp pop tde pop rp1 pop ax pop psw ret inttm8: sel rb7 push ax push rp1 push rp2 push rp3 push whl push vvp push tde push uup movg whl,sp addg whl,#14h movg tde,#0ffaa0h mov c,#04h movbk [tde+],[whl+] movg uup,#tm8prog mov a,[uup] cmp a,#00h bnz $t8 br!!t2 t8: mov r7,a mov r6,#00h mov r5,#00h incg uup t7:mov a,[uup] dec a cmp a,#00h bnz $t3 incg uup movg whl,[uup] call !!plp decg uup movg tde,uup call !!del mov r5,#0ffh call !!pls brt4 t3: mov [uup],a addg uup,#04h dec r7 t4: cmp r7,#00h bz$t5 brt7 t5: movg whl,#tm8prog mov a,[whl] sub a,r6 mov [whl],a cmp r5,#0ffh bz$t6 brtout t6: movg uup,#tm8prog mov a,[uup] cmp a,#00h bz$t2 brtout t2:mov !!tm8flag,#0ffh clr1 tmc8.7 set1 tmic8.6 tout: pop uup pop tde pop vvp pop whl pop rp3 pop rp2 pop rp1 pop ax reti ptp: movg tde,#tm8prog mov a,[tde] mov x,a inc a mov [tde],a mov a,#04h mulu x movg vvp,#00h movw rp4,ax incg tde addg tde,vvp mov c,#04h movg whl,#inget1 movbk [tde+],[whl+] ret del: dec r7 cmp r7,#00h bz$dout mov a,r7 mov x,#04h mulu x movg whl,tde addg whl,#04h mov c,x cmp c,#00h bz$d1 movbk [tde+],[whl+] d1: cmp a,#00h bz$dout mov c,#0ffh movbk [tde+],[whl+] dec a brd1 dout: inc r6 ret plp:movg tde,#lintprog movg vvp,#00h mov a,#tm8hpv mov r8,a addg tde,vvp mov a,[tde] inc a mov [tde],a dec a mov x,#03h mulu x movw rp4,ax addg tde,vvp addg tde,#02h;t movg vvp,whl movg whl,[tde] addg tde,#03h; movg [tde],whl movg whl,vvp subg tde,#03h;tde-3 movg [tde],whl ret pls: movg tde,#lintsp movg vvp,#00h mov a,[tde] mov r8,a inc a mov [tde],a incg tde addg tde,vvp mov a,[tde] incg tde mov [tde],a decg tde mov a,#tm8hpv mov [tde],a ret END 12、矢量变化检测程序: NAME xvtcn PUBLIC xvtcz extrn inget1,inget4, inget7,xcon1,ycon1,xcon2 ,ycon2 extrn xcon3,xcon4 ,ycon3,ycon4,ycon6,ang30min CSEG xvtcz: push psw sel rb3 movg whl,inget1 movg uup,inget4 mov a,[whl] mov x,a mov a,[uup] cmp a,x bz$xv1 addg whl,#02h addg uup,#02h mov a,[whl] mov x,a mov a,[uup] cmp a,x bnz $xv2 br!!xv3 xv2: mov a,#01h mov [%inget7],a br!!out xv1: addg whl,#02h addg uup,#02h mov a,[whl] mov x,a mov a,[uup] cmp a,x bz$xv4 br!!xv5 xv4: decg whl decg uup mov a,[whl] mov x,a cmp x,#00h bnz $xv42 mov a,[uup] cmp a,x bnz $xv42 xv43: mov a,#00h mov [%inget7],a br!!out xv42: addg whl,#02h addg uup,#02h mov a,[whl] mov x,a; cmp x,#00h bnz $xv41 mov a,[uup] cmp a,x bnz $xv4i br!!xv43 xv41: movg whl,inget1 movg uup,inget4 mov a,[whl] cmp a,#01 bz$xv44; br!!xv45; xv44: addg whl,#02h mov a,[whl] cmp a,#00h bz$xv46 br!!xv47 xv46: incg whl mov a,[whl] cmp a,#00h bnz $xv48 mov a,#01h xv48: mov c,a; subg whl,#02h addg uup,#03h mov a,[whl] mov x,a mov a,[uup] mulu x divuw c movw rp1,ax subg uup,#02h mov a,[uup] mov x,a mov a,#00h cmpw ax,rp1 bnz $xv49 br!!xv43 xv49: bc $xv410 br!!xv411 xv410: movg whl,inget1 incg whl mov a,[whl] mov x,#xcon1 mulu x movw rp1,ax addg whl,#02h mov a,[whl] mov x,#ycon1 mulu x cmpw ax,rp1 bnc $xv4101 movg uup,inget4 incg uup mov a,[uup] mov x,#xcon4 mulu x movw rp1,ax addg uup,#02h mov a,[uup] mov x,#11h mulu x cmpw rp1,ax bnc $xv4101 mov a,#01h mov [%inget7],a br!!out xv4101: br !!xv43 xv411: movg whl,inget1 incg whl mov a,[whl] mov x,#ang30min; mulu x movw rp1,ax addg whl,#02h mov a,[whl] mov x,#0ah mulu x cmpw ax,rp1 bc$xv4111 movg uup,inget4 incg uup mov a,[uup] mov x,#0ah mulu x movw rp1,ax addg uup,#02h mov a,[uup] mov x,#ang30min mulu x cmpw ax,rp1 bnc $xv4111 mov a,#01h mov [%inget7],a br!!out xv4111: br !!xv43 xv47: incg whl mov a,[whl] cmp a,#00h bnz $xv471 mov a,#01h xv471:mov c,a subg whl,#02h addg uup,#03h mov a,[whl] mov x,a mov a,[uup] mulu x divuw c movw rp1,ax subg uup,#02h mov a,[uup] mov x,a mov a,#00h cmpw ax,rp1 bnz $xv472 br!!xv43 xv472: bc $xv473 br!!xv474 xv473: br !!xv410 xv474: movg whl,inget1 incg whl mov a,[whl] mov x,#ycon6 mulu x movw rp1,ax addg whl,#02h mov a,[whl] mov x,#0eh mulu x cmpw rp1,ax bnc $xv475 movg uup,inget4 addg uup,#03h mov a,[uup] mov x,#0eh mulu x movw rp1,ax subg uup,#02h mov a,[uup] mov x,#ycon6 mulu x cmpw rp1,ax bnc $xv475 mov a,#01h mov [%inget7],a br!!out xv475: br !!xv43 xv45: addg whl,#02h mov a,[whl] cmp a,#00h bz$xv451 br!!xv43 xv451:movg whl,inget1 addg whl,#03h mov a,[whl] cmp a,#00h bnz $xv452 mov a,#01h xv452: mov c,a subg whl,#02h movg uup,inget4 addg uup,#03h mov a,[whl] mov x,a mov a,[uup] mulu x divuw c movw rp1,ax subg uup,#02h mov a,[uup] mov x,a mov a,#00h cmpw ax,rp1 bc $xv453 mov a,[whl] mov x,#ang30min mulu x mov c,#08h divuw c movw rp1,ax addg whl,#02h mov a,[whl] mov x,a mov a,#00h cmpw rp1,ax bnc $xv454 mov a,[uup] mov x,a mov a,#00h movw rp2,ax addg uup,#02h mov a,[uup] mov x,#ang30min mulu x mov c,#0ch divuw c cmpw ax,rp2 bnc $xv454 mov a,#01h mov [%inget7],a br!!out xv454: br !!xv43 xvl4101:br!!xv4101 xv453: movg whl,inget1 incg whl mov a,[whl] mov x,#18h mulu x movw rp1,ax addg whl,#02h mov a,[whl] mov x,#ycon1 mulu x cmpw ax,rp1 bnc $xv14101 movg uup,inget4 incg uup mov a,[uup] mov x,#xcon4 mulu x movw rp1,ax addg uup,#02h mov a,[uup] mov x,#07h mulu x cmpw rp1,ax bnc $xv14101 mov a,#01h mov [%inget7],a br!!out xv3: incg whl incg uup mov a,[whl] mov x,a mov a,[uup] cmp a,x bnc $xv31 mov r6,x mov r4,a subg whl,#02h subg uup,#02h mov a,[whl] mov r7,a mov a,[uup] mov r5,a br!!xv32 xv31: mov r6,a mov r4,x subg whl,#02h subg uup,#02h mov a,[uup] mov r7,a mov a,[whl] mov r5,a xv32: cmp r4,#00h bnz $xv34 br!!xv33 xv131:br !!xv132 xv34: movg whl,inget1 mov a,[whl] cmp a,#00h bz$xv13a movg whl,inget4 mov a,[whl] cmp a,#00h bnz $xv131 xv13a: mov a,r6 mulu r5 divuw r4 mov c,r7 mov b,#00h addw ax,bc mov c,#xcon2 muluw rp1 cmp x,#00h bnz $xv33 mov a,#10h mulu r6 cmpw ax,bc bc$xv33 movg whl,inget1 addg whl,#02h mov a,[whl] cmp a,#00h bnz $xv35 subg whl,#02h mov a,[whl] cmp a,#00h bz$xv36 mov a,#0e2h mov [%inget7],a br!!out xv36:mov a,#0f4h mov [%inget7],a br!!out xv35: subg whl,#02h mov a,[whl] cmp a,#00h bz$xv37 mov a,#0f2h mov [%inget7],a br!!out xv37: mov a,#0e4h mov [%inget7],a br!!out xv33:mov a,#01h mov [%inget7],a br !!out xv132: mov a,r6 mulu r5 divuw r4 mov c,r7 mov b,#00h addw ax,bc mov c,#xcon2 muluw rp1 cmp x,#00h bnz $xv33 mov a,#xcon2 mulu r6 cmpw ax,bc bc$xv33 movg whl,inget1 addg whl,#02h mov a,[whl] cmp a,#00h bnz $xv35 subg whl,#02h mov a,[whl] cmp a,#00h bz$xv36 mov a,#0e2h mov [%inget7],a br!!out xv5: decg whl decg uup mov a,[whl] mov x,a mov a,[uup] cmp a,x bnc $xv51 mov r7,x mov r5,a addg whl,#02h addg uup,#02h mov a,[whl] mov r6,a mov a,[uup] mov r4,a br!!xv52 xv51: mov r7,a mov r5,x addg whl,#02h addg uup,#02h mov a,[uup] mov r6,a mov a,[whl] mov r4,a xv52: cmp r5,#00h bnz $xv54 br!!xv53 xv54: mov a,r7 mulu r4 divuw r5 mov c,r6 mov b,#00h addw ax,bc mov c,#yconl muluw rp1 cmp x,#00h bnz $xv53 mov a,#ycon1 mulu r7 cmpw ax,bc bc$xv53 movg whl,inget1 mov a,[whl] cmp a,#00h bnz $xv55 addg whl,#02h mov a,[whl] cmp a,#00h bz$xv56 mov a,#0f1h mov [%inget7],a br!!out xv56: mov a,#0e3h mov [%inget7],a br!!out xv55: addg whl,#02h mov a,[whl] cmp a,#00h bz$xv57 mov a,#0e1h mov [%inget7],a br!!out xv57: mov a,#0f3h mov [%inget7],a br!!out xv53: mov a,#01h mov [%inget7],a out:pop psw ret END 13、测矢量的运动趋势: NAME xvtmn PUBLIC xvtmz,xvtm2z extrn inget1,inget4,inget7 CSEG xvtmz: push psw sel rb3 movg whl,inget1 movg uup,inget4 mov a,[whl] mov x,a mov a,[uup] cmp a,x bz$xv1 addg whl,#02h addg uup,#02h mov a,[whl] mov x,a mov a,[uup] cmp a,x bnz $xv2 br!!xv3 xv2: mov a,#03h mov [%inget7],a br!!out xv1: addg whl,#02h addg uup,#02h mov a,[whl] mov x,a mov a,[uup] cmp a,x bz$xv4 br!!xv5 xv4: subg whl,#02h mov a,[whl] cmp a,x bnz $xv41 incg whl mov a,[whl] mov x,a incg uup mov a,[uup] mulu x movw rp1,ax addg whl,#02h subg uup,#02h mov a,[whl] mov x,a mov a,[uup] mulu x cmpw ax,rp1 bnz $xv42 xv44: mov a,#00h mov [%inget7],a br!!out xv42: bnc $xv43 mov a,#02h mov [%inget7],a br!!out xv43: mov a,#01h mov [%inget7],a br!!out xv41: incg whl mov a,[whl] mov x,a incg uup mov a,[uup] mulu x movw rp1,ax addg whl,#02h subg uup,#02h mov a,[whl] mov x,a mov a,[uup] mulu x cmpw ax,rp1 bnz $xv45 br!!xv44 xv45: bc $xv43 br!!xv42 xv3: cmp a,#00h bnz $xv31 subg whl,#02h mov a,[whl] cmp a,#00h bnz $xv32 xv33: mov a,#02h mov [%inget7],a br!!out xv32:mov a,#01h mov [%inget7],a br!!out xv31: subg whl,#02h mov a,[whl] cmp a,#00h bnz $xv33 br!!xv32 xv5: subg whl,#02h mov a,[whl] cmp a,#00h bnz $xv51 addg whl,#02h mov a,[whl] cmp a,#00h bnz $xv52 xv53: mov a,#01h mov [%inget7],a br!!out xv52:mov a,#02h mov [%inget7],a br!!out xv51: addg whl,#02h mov a,[whl] cmp a,#00h bnz $xv53 br!!xv52 xvtm2z: push psw sel rb3 movg whl,inget1 movg uup,inget4 mov a,[whl] mov x,a mov a,[uup] cmp a,x bnz $xvt1 br!!xv1 xvt1:addg whl,#02h addg uup,#02h mov a,[whl] mov x,a mov a,[uup] cmp a,x bnz $xvt2 br!!xv3 xvt2: incg whl mov a,[whl] cmp a,#00h bnz $xvt3 mov a,#01h xvt3:mov c,a subg whl,#02h incg uup mov a,[whl] mov x,a mov a,[uup] mulu x divuw c movw rp1,ax subg uup,#02h mov a,[uup] mov x,a mov a,#00h movw rp2,ax decg whl mov a,[whl] cmp a,#00h bnz $xvt4 cmpw rp1,rp2 bnc $xvt5 xvt6: mov a,#01h mov [%inget7],a br!!out xvt5: mov a,#02h mov [%inget7],a br!!out xvt4: cmpw rp1,rp2 bnc $xvt6 br!!xvt5 out: pop psw ret ·———————————— · END14、AD中断处理、P06端口中断处理、TM7时间中断处理等程序NAME zpubnpublic readfend,readfinit,writf,get_data,ztoabs,disp_key,disp_one,disp_addr,readlcd,rprs1,prs1,prs0public disp_word,ini_1,ini_2,clrram,clear,disp_line,get_datamnpublic intp01,intp06,inttm2,inttm7,intad,rprs2extrn aqs2z,aqslz,indexallin,lcd_lin,lcd_vol,lcd_data,key_code,disp_code,z_sys1flaginfind1,zf,hzextrn sptemp,indexallout,infind5,infind8,z_sysflag,infind2,lcd_linmax,lcd_volmaxz_mtemp,z_offtempextrnaddrad,hzword,z_intflg1,z_intflg4,z_actbtemp,z_ltcmp,z_maddtcmp,infind6,z_offabsextrn z_sys4flag,lintsp,handwv,adonez,picbytes,getdataaddr,lcdxy,z_intflg3, lcdxyx,lcdxyy,x00,y00,xmax, ymax extrn luqd860z cseg intp06:sel rb6 clr1 z_intflg3.4 bt z_sys4flag.2,$handp06 intp060: mov pic6,#01000011b clr1 egp0.6 clrl egn0.6 mov tmic7,#00000011b mov tmc7,#10000000b mov prm7,#00000111b mov cr70,#7fh setl z_sys1flag.1 clr1 z_sys1flag.2 clr1 z_sys1flag.3 clr1 z_sys1flag.4 reti handp06: mov pic6,#01000011b clr1 egp0.6 clr1 egn0.6 mov tmic7,#00000011b mov tmc7,#10000000b mov prm7,#00000111b mov cr70,#3ah reti handtm7: bf z_sys1flag.4,$inttm70 bf p0.6,$torethand call !!adonez br !!toret torethand:push vvp movw !!lcdxy,#0ffffh movg tde,#lintsp movg vvp,#00h mov a,[tde] mov r8,a jnc a mov [tde],a incg tde addg tde,vvp mov a,[tde] incg tde mov [tde],a decg tde mov a,#handwv mov [tde],a mov tmic7,#01000011b mov tmc7,#00000111b pop vvp pop tde pop ax reti inttm7: sel rb7 push ax push tde bt z_sys4flag.2,$handtm7 setlz_intflg3.2 inttm70: bt z_sys1flag.2,$multm1 mov a,p0 bf p0.6,$toerr set1 pm0.4 clr1 pm0.4 clrl p0.4 set1 pm0.6 clr1pm9.4 set1 pm0.3 clr1 pm0.5 set1 p0.5 clr1p9.4 mov adic,#00000011b mov adm,#10100000b mov adis,#00000111b movg tde,#0ffd57h movg addrad,tde set1 z_sys1flag.0 set1 z_sys1flag.2 toret: pop tde pop ax reti toerr: set1 pm0.3 set1 pm0.5 set1 pm0.4 set1 pm0.6 set1pm9.4 clr1 pm0.5 clr1 pm0.4 clr1 p0.4 clr1 p0.5 mov pic6,#00000011b set1 egp0.6 clr1 egn0.6 mov tmic7,#01000011b mov tmc7,#00000111b set1 z_sys1flag.4 br!toret multm1: bf p0.6,$nopress press: br !toret sectm1: set1 z_sys1flag.3 br!toret nopress: bf z_sys1flag.3,$sectml set1 z_sys1flag.4 mov tmic7,#01000011b mov tmc7,#00000111b mov pic6,#00000000b set1 egp0.6 clr1 egn0.6 clr1 z_sys1flag.2 clr1 z_sys1flag.3 set1 pm0.3 clr1 pm0.5 clr1 pm0.4 set1pm9.4 clr1 p0.4 clr1 p0.5 set1 pm0.6 br !toret intad: sel rb6 push whl pushtde push ax mov a,adcr mov adic,#01000011b mov adm,#00100000b bf z_sys4flag.2,$intapl1 bf z_intflg3.1,$intapl2 cmp a,#0fch bc $intapl3 clr1 pm0.4 clr1 pm0.5 set1p0.5 clr1p0.4 set1pm0.3 clr1pm9.4 clr1p9.4 setlz_sys1flag.0 clr1z_intflg3.1 setz_intflg3.2 mov adis,#00000111b mov adic,#00000011b nop nop nop nop nop nop mov adm,#10100000b br!intadpret intap13: movw !!lcdxyx,#0ffffh br !!adhand intapl2:bt z_intflg3.2,$intapl1 cmp a,#0fch bc $intapl3 br !!adhand intapl1: bf z_sys1flag.0,$intad6p set1 p9.4 nop nop nop nop nop set1 pm0.6 clr1 pm0.5 clr1 pm0.4 set1 p0.4 clr1 p0.5 set1 pm9.4 nop nop nop nop clr1 pm0.3 clr1 p0.3 clr1 z_sys1flag.0 movg whl,addrad bf z_intflg3.3,$changey savey: mov [whl],a mov !!lcdxyy,a subg whl,#1 movg addrad,whl mov adis,#00000110b mov adic,#00000011b mov adm,#10100000b br !intadpret changey:sub a,y00 mov x,#0ffh mulu x mov e,ymax sub e,y00 divuw e mov a,x br $!savey changex:sub a,x00 mov x,#0ffh mulu x mov e,xmax sub e,x00 divuw e mov a,x br $!savex intad6p:set1 p9.4 movg whl,addrad mov x,#0ffh sub x,a mov a,x bf z_intflg3.3,$changex savex: mov[whl],a mov !!lcdxyx,a clr1 adm.7 mov adic,#01000011b set1 pm0.3 set1 pm0.6 clr1 pm0.5 clr1 pm0.4 clr1 p0.4 clr1 p0.5 set1 pm9.4 set1 z_intflg1.6 clr1 z_sys1flag.1 bf z_sys4flag.2,$intadpret2 clr1 pm0.3 clr1p0.3 set1z_sys1flag.0 clr1z_intflg3.1 clr1z_intflg3.2 mov adis,#00000110b mov adic,#00000011b mov adm,#10100000b br !!intadpret intadpret2:set1 z_intflg4.7 br !!intadpret adhand: push tde movg whl,#lintsp mov a,[whl] add a,#1 mov[whl],a movg tde,#0 mov e,a addg whl,tde mov a,#handwv mov[whl],a pop tde mov tmic7,#01000011b mov tmc7,#00000111b set1 pm0.3 clr1 pm0.5 clr1 pm0.4 clr1 p0.5 clr1 p0.4 set1 pm0.6 set1 pm9.4 intadpret:pop ax pop tde pop whl reti END 15、主程序: manu 52h; manuheader1 manu 52h ffh; #include″l2.h″; begin;define at 0ffd00h back 41 flagy code num1 data d3 tempadd todata 2(1 binum1 1 binum2)binum 1 errnum 4 bdataaddr 1 f5num at 0ffe57h zsysflag zintflg1 zintflg2 1 1 zsys4flag at 0ffe7ah tempcode zsys2flag 2 1 user zsys1flag at 0ffdb6h zsys5flag at 0ffd56h xx yy at 0fff0dh p130 at 0ff400h 2 hwall at 0ffd5fh hwtm2 at 0ffdb7h hwtm2copy at 0ff370h handdatal at 0ffd20h 3inter1 at 0ffaa0h resend at 0ffab0h sendok at 0ffac0h senddata at 0ff828h num11 num12 at 0ff768h num10 num20 at 0fe008h 3record at 0fe007h send2; flagy=0; let2(zsysflag(08h))=0; start0:let2(flagy(40h))=0; start:if zsys4flag(80h)=0h elsegoto startin; play _to(0fe008h),_text(02h,07h,00 h,f1h,00h,f5h,00h,00h,00h,00h ); num10=1,num20=1; startin:clearscreenall; displaycin(3,1)is 00dah; displaycin(7,1)is 1ebfh 1ec0h 1ec1h 1ec2h; displayin(4,14)is 3ah; play _to(0ff820h),_text(1,1,1,1,1, 42h,1,1,1,1,1,1); num11=num10,num12=num20,tempa dd=0ff820h+6,{tempadd}=num10, tempadd=0ff820h+7,{tempadd}=n um20; refresh _from(record),_para(0ff820h), _mode(2),_back(back); dispcur _from(record),_para(0ff820h), _mode(0),_back(back); play _to(senddata),_text(00h,ffh,c ah,ffh); d=1,todata=0ff890h+1,{todata} =0; ishand:if flagy(40h)=40h goto start0; hwall=0; play _to(0ff370h),_text(0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0); let2(zsys4flag(04h))=04h; let2(zintflg1(01))=0; coor dinate; waitnew_name(70),_line(t1); t1:if zintflg1(01)=01 goto iskey; ishand1:cmk8 _data($hwall),_back(back); handbag; goto tosend3; ifhand:switch zsys5flag={1 ishand,3ishand,4ifishand}; goto ifkey; ifishand:if flagy(20h)=20h goto ifkey; goto ishand; ifkey:keywait; iskey:ad _from(xx,yy),_to(tempcode),_m anu(78h),_line(0ah); if tempcode=0 goto ad2; let2(flagy(80h))=0; code=tempcode; switch code={9fh esc,a3h cancel,89h enter,83h left,84h right}; if zsys5flag=3 goto ishand1; goto ishand; left:dispcur _from(record),_para(0ff820h), _mode(1),_back(back); toleft:switch back={2 left3,3 right5,5 right5}; goto ifhand; left3:refresh _from(record),_para(0ff820h), _mode(3),_back(back); dispcur _from(record),_para(0ff820h), _mode(0),_back(back); goto ifhand; right5:refresh _from(record),_para(0ff820h), _mode(1),_back(back); dispcur _from(record),_para(0ff820h), _mode(0),_back(back); goto ifhand; right:dispcur _from(record),_para(0ff820h), _mode(2),_back(back); goto toleft; cancel:tempadd=0ff888h,{tempa dd}=num11,tempadd=tempadd+1,{ tempadd}=num12; delete _from(record),_text(0ff888h), back(back); refresh _from(record),_para(0ff820h), _mode(2),_back(back); dispcur _from(record),_para(0ff820h), _mode(0),_back(back); goto ifhand; function:clearscreenall; num1=1; displaycin 1,1,is″自动刷新″ nextline 1″半自动刷新″; displaycin 5,1,is″手动刷新″ nextline 1″速度设置″; displayin(2,65)is 3ah,(4,81)is 3ah,(6,65)is 3ah,(8,65)is 3ah; call funcset; function1:displayinflag52h flag1 zsys5flag is e5h; inputa:keywait; ad _from(xx,yy),_to(tempcode),_m anu(78h),_line(0ah); if tempcode=0 goto ad2a; getkeyto back,code,data,zsys5flag,num1 ,1,4,1; switch data={7 entera,8 esca,1 movea}; goto inputa; entera:goto funcret; esca:goto funcret; toinputa:let2(flagy(08h))=0; goto inputa; movea:clearscreenfrom (2,70)to(2,77),(4,86)to(4,93) ,(6,70)to(6,77),(8,70)to(8,77 ); displayinflag 52h flag1 zsys5flag is e5h; call funcset; goto inputa; flag1:dbcur (2,70),(4,86),(6,70),(8,70); ad2a:ad _from(xx,yy),_to(data),_manu( 78h),_line(21h); switch data={5 suba,6 adda}; zsys5flag=data; goto movea; suba:if flagy(08h)=08h elsegoto inputa; if hwtm2>=32h elsegoto inputa hwtm2=hwtm2-19h,hwtm2copy=hwt m2; goto dispa; adda:if flagy(08h)=08h elsegoto inputa; if hwtm2<=elh elsegoto inputa; hwtm2=hwtm2+19h,hwtm2copy=hwt m2; goto dispa; funcret:goto start; funcset:switch zsys5flag={1 set1,2 set2,3 set3,4 set4}; return; set1:hwtm2=hwtm2copy; let2(flagy(20h))=0h; return; set2:hwtm2=hwtm2copy; let2(flagy(20h))=20h; return; set3:hwtm2=ffh; return; set4:hwtm2=hwtm2copy; displaycin(7,84)is lebfh move 16lec0h; let2(flagy(08h))=08h; num1=hwtm2/ 19h-1,num1=num1+30h,code=8,da ta=105; displayin(code,data)is num1; return; dispa:num1=hwtm2/ 19h-1,hum1=num1+30h,code=8,da ta=105; displayin(code,data)is num1; goto inputa; tosend3:binum=hwall,tempadd=0 ffa00h,errnum=0; if binum1=0 goto ishand; send1_from(#hwall); goto wait3; send:tempadd=0ffa00h,errnum=0 ; main2:send1_from(#senddata); wait3:if zintflg1(20h)=20h elsegoto wait3; resend21:download3 _to(tempadd),_back(data); waitnew_name(84),_line(t2); t2:if data=0 elsegoto toresend2; todata=tempadd+4,data={todata }; switch data={2 tomain2,3 ifhand,14h nodata}; goto nodata; tomain2:clearscreenall; displaycin(3,34)is″通讯错误″ 00bch nextline 6″请按任意键返 回″; keywait; goto start; toresend2:play _to(resend),_text(09h,ffh,cah ,ffh,04h,57h,5bh,00h,ffh,ffh) ; send1_from(#resend); wait5:if zintflg1(20h)=20h elsegoto wait5; goto resend21; nodata:clearscreenfrom(3,17)t o(4,64),(5,1)to(6,64); displaycin(3,1)is 00dah″无数 据″; goto ifhand; sendret:goto ishand; enter:if zsys4flag(80h)=80h goto iscall; ispcbj:goto tosend3; iscall:return; esc:return; ad2:ad _from(xx,yy),_to(num1),_manu( 78h),_line(20h); revlcdfrom _line(revlcd),_num(num1); adwait:if zsys1flag(10h)=10h elsegoto adwait; revlcdfrom _line(revlcd),_num(num1); let2(flagy(80h))=00h; switch num1={0bh function}; if zsys5flag=3 goto ishand1; goto ishand; revlcd:db (3,17,4,32),(3,33,4,48),(3,49 ,4,64),(5,1,6,16),(5,17,6,32) ,(5,33,6,48),(5,49,6,64),(7,1 ,8,16),(7,17,8,32),(7,33,8,48 ),(7,49,8,64),(0,0,0,0); end;