多型号单片机定时器初值\波特率计算器
摘 要:作者使用易语言编写了一个多型号单片机定时器初值、波特率计算器的程序,支持Atmel、Philips、SST、STC、Winbond、PIC、AVR等多种单片机,并且各种单片机内部支持的参数均可设定,对单片机编程者提供最有效、最方便的使用界面,大大提高了工作效率。
关键词:单片机 定时器
中图分类号:TM5文献标识码:A文章编号:1674-098X(2011)01(b)-0095-01
目前网络上有多种多样的单片机初值计算器,但大多功能单一,只能针对一两种型号的单片机,且有些内部参数不可调整,限制了单片机开发者的创造性。易语言是一个易学易用的汉语编程语言,支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具环境,能与常用的编程语言互相调用,具有充分利用API,COM、DLL、OCX组件,各种主流数据库,各种实用程序等多种资源的接口和支撑工具,中文源代码被直接编译为CPU指令,运行效率高。除了支持界面设计的可视化,还支持程序流程的即时可视化,现有各种支持库多达40多个,可以满足用户几乎所有的Windows编程需求。
由于涉及多种品牌单片机,而且每种单片机又分不同的型号,每种型号之间功能上又有所不同,因此在计算上有多种不同的参数和计算方法,在多种单片机之间很难有一个统一的公式,并且每种单片机的设置界面也不尽相同,为此,本程序对每种品牌的单片机设置一个固定的界面,对一种单片机的不同型号之间设置不同的参数设置选项,计算公式则根据具体型号给出。
下面结合89S51系列单片机的界面分析一下各控件的功能,软件界面如图1:
左侧一栏是单片机品牌选择栏,使用卷帘式菜单控件,是现在软件的流行方式,动画效果好。主界面上方时晶振频率输入栏,需输入真实硬件使用的晶振频率,左侧“串口模式”、“串口倍速”均为下拉式选择框,依据单片机的设定选择相应的参数。“波特率”一栏是要
使用的串口速率选择栏,从2400bit/s到921600bit/s。右侧的定时时间即定时器的中断时间,单位为毫秒,下面的定时模式有三种,根据具体使用方式选择,不同的方式决定不同的TH和TL值。
当需要输入的数值和需要选择的方式确定后,下方的TH和TL值就已经算出,最下面的误差率分别是波特率和定时器的误差百分比,当波特率误差超过±3.5%时,串口通讯误码率将影响通讯质量,这时误差率的字体颜色变为红色,提示错误;同样,当定时器的误差率超过0.1%时,字体颜色变为黄色,提醒编程者误差已经较大。右下角的大头钉按钮被点击后程序界面将被固定在最前端,方便随时使用。
部分主要的计算程序如下:
波特率=到数值(组合框_波特率.取项目数值(组合框_波特率.现行选中项))
晶振频率=到小数(编辑框_晶振频率.内容)×1000000÷组合框_时钟分频.取项目数值(组合框_时钟分频.现行选中项)
串口倍速=到数值(组合框_串口倍速.取项目数值(组合框_串口倍速.现行选中项))
定时时间=到小数(编辑框_定时时间.内容)÷1000
时钟倍速=到数值(组合框_6T模式.取项目数值(组合框_6T模式.现行选中项))×到数值(组合框_12T模式.取项目数值 (组合框_12T模式.现行选中项))
TH1TL1=65536-取整(晶振频率×时钟倍速×串口倍速÷波特率÷32÷12+ 0.5)
实际波特率=晶振频率×时钟倍速×串口倍速÷32÷12÷(65536-TH1TL1)
编辑框_波特率TH值.内容=“0x”+取十六进制文本(TH1TL1\256)
编辑框_波特率Tl值.内容=“0x”+取十六进制文本(TH1TL1%256)
.如果真(组合框_定时模式.取项目数值(组合框_定时模式.现行选中项)=2)
编辑框_波特率TH值.内容=编辑框_波特率Tl值.内容
.如果真(组合框_定时模式.取项目数值(组合框_定时模式.现行选中项)=0)
TH1TL1=8192-取整(晶振频率×时钟倍速×串口倍速÷波特率÷32÷12+0.5)
实际波特率=晶振频率×时钟倍速×串口倍速÷32÷12÷(8192-TH1TL1)
编辑框_波特率TH值.内容=“0x”+取十六进制文本(TH1TL1\256)
编辑框_波特率Tl值.内容=“0x”+取十六进制文本(TH1TL1%256)
.如果真结束
波特率误差率=(实际波特率-波特率)÷波特率×100
编辑框_波特率误差率.内容=数值到格式文本(波特率误差率,2,假)+“%”
计数值=定时时间×晶振频率×时钟倍速÷12
编辑框_定时器TH值.内容=“0x”+取十六进制文本((65536-计数值)\256)
编辑框_定时器Tl值.内容=“0x”+取十六进制文本((65536-计数值)%256)
定时误差率=(计数值-取整(计数值))÷计数值×100
编辑框_定时器误差率.内容=数值到格式文本(定时误差率,3,假)+“%”
.如果真(组合框_定时模式.取项目数值(组合框_定时模式.现行选中项)=0)
编辑框_定时器TH值.内容=“0x”+取十六进制文本((8192-计数值)\32)
编辑框_定时器Tl值.内容=“0x”+取十六进制文本((8192-计数值)%32)
.如果(波特率误差率>3.5或波特率误差率<-3.5)
编辑框_波特率误差率.文本颜色=#红色
.否则
编辑框_波特率误差率.文本颜色=#白色
.如果(定时误差率>0.1)
编辑框_定时器误差率.文本颜色=#黄色
.否则
编辑框_定时器误差率.文本颜色=#白色
下一篇:关闭百分浏览器的首页网址导航