3.3 数制转换
由于标度变换后得到两个字节的实际数值,不能直接送显示端显示,须经过适当的处理(此处将其转换为5位非压缩BCD码),才能送显示端输出显示。
开始 置取数地址指针R0的初值 置通道号存储单元 通道号左移1位 取数至R4R5 置BCD码存储单元的首地址 置BCD码个数 置除数 调用NDIV子程序 存入显示缓冲区 显示缓冲区地址+1 N BCD转换完毕? Y 返回 图3-5 双字节二进制整数转换成BCD码程序流程图 - 31 -
DISRAM:
NDIV Y (R2R3)?(R6R7)? N 16?B 1?F0 0?C R2 R3 R4 R5 C 左环移1位 C?F0 (R2R3)-(R6R7)?AR1 Y F0=1? Y C=1? N (AR1)?R2R3(执行减法) (R5)+1?R5(上商1) N N (B)-1?B=0? Y 0?F0 返回 图3-6 无符号双字节数除法程序框图 (略)
- 32 -
3.4 键盘程序
键盘部分软件主要功能是实现对通道号指示缓冲区的数值进行增或减,从而控制通道的选择。 KEYINT:
开始 PSW,ACC压栈保护 Y 按键1中断 P1.0=1? (通道加) N Y P1.1=1? 按键2中断 N (通道减) PSW,ACC出栈 返回 图3-7键盘中断程序流(略)
- 33 -
3.5 LED显示程序
将内部RAM中20H~28H单元中的8个分离BCD码,译码后从左至右依次显示出来,编制的程序如下: DISP:(略)
开始 指向A口 取位选码 指定显示位 指向B口 取显示字符 (略)查七段码 段选码B口送出 调用1ms延时子程 准备显示下一位 位选 N 8位显示完毕? Y 返回 图3-8 LED显示程序流程图 - 34 -
3.6 通信程序
3.6.1 上位机程序 1.程序初始化
主要完成串口的选择、波特率及帧结构设置、打开串口以及发送和接收触发的时间控制等。 '初始化代码
Private Sub Form_Load()
MSComm.CommPort=2
?设置串口2
?波特率2400,无校验,8位
MSComm.Settings=\
数据,一位停止位
MSComm.InputLen=0
?读取接受缓冲区的所有
字符
MSComm.InBufferSize=1024
?设置接受缓冲区为1024
字节
MSComm.OutBufferSize=512
?设置发送缓冲区为512
字节
MSComm.PortOpen=True MSComm.SThreshold=0 MSComm.RThreshold=1
?打开串口 ?不触发发送事件 ?每一个字符到接收缓冲
区都触发接收事件
MSComm.InBufferCount=0 MSComm. OutBufferCount=0 Text_SEND.Text=“” Text_RECV.Text=“”
- 35 -
?清除发送缓冲区数据 ?清除接收缓冲区数据 ?清空发送文本框 ?清空接收文本框