📄 定时器.frm
字号:
Name = "黑体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 2
Top = 2520
Width = 1215
End
Begin VB.Label 定时时间
Caption = "定时时间"
BeginProperty Font
Name = "黑体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 360
TabIndex = 1
Top = 1560
Width = 1215
End
End
Attribute VB_Name = "定时器"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub Form_Load()
方式选择下拉框.AddItem "0"
方式选择下拉框.AddItem "1"
方式选择下拉框.AddItem "2"
方式选择下拉框.AddItem "3"
定时器的选择.AddItem "0"
定时器的选择.AddItem "1"
定时器的选择.AddItem "2"
优先级选择框.AddItem "低"
优先级选择框.AddItem "高"
提示框.Text = "帮助:" & vbCrLf
提示框.Text = 提示框.Text & "此软件用于生成8051系列单片机的定时器初始化代码" & vbCrLf
提示框.Text = 提示框.Text & "请先在面板上填上数据,后按确定,此软件会自动生成代码" & vbCrLf
提示框.Text = 提示框.Text & " Creat by 福建三明学院应用物理系03级电子科技。陈子牙" & vbCrLf
提示框.Text = 提示框.Text & "邮箱:chenziya198603@163.com" & vbCrLf
提示框.Text = 提示框.Text & "电话:0598-8398271" & vbCrLf
End Sub
Private Sub 定时时间输入框_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If Val(晶振频率输入框.Text) > 0 And Val(定时时间输入框.Text) > 0 Then
Call FuntionOutput '调用数据的计算及代码输出
Else: 定时时间输入框.Text = ""
End If
End If
End Sub
Private Sub 方式选择下拉框_Click()
Select Case 方式选择下拉框.Text
Case 0
提示框.Text = "帮助:" & vbCrLf
提示框.Text = 提示框.Text & "此时定时器被设置为13位定时器,最大定时时间为 12*2^13/Fclk(s)"
Case 1
提示框.Text = "帮助:" & vbCrLf
提示框.Text = 提示框.Text & "此时定时器被设置为16位定时器,最大定时时间为 12*2^16/Fclk(s)"
Case 2
提示框.Text = "帮助:" & vbCrLf
提示框.Text = 提示框.Text & "此时定时器被设置为8位定时器,工作于重装模式,最大定时时间为 12*2^8/Fclk(s)"
End Select
End Sub
Private Sub 即时通信_Click()
串口调试.Show
End Sub
Private Sub 确定_Click()
If Val(定时时间输入框.Text) > 0 Then
Call FuntionOutput
Else: MsgBox ("请输入定时时间")
End If
End Sub
Public Sub FuntionOutput()
Dim TH0Buf As Integer, TL0Buf As Integer, timerinter As Long
Select Case 定时器的选择.Text
Case 0 '如果是定时器0
Select Case 方式选择下拉框.Text
Case 0 '定时器方式0,13位定时器
If Val(定时时间输入框.Text) > 12 / (Val(晶振频率输入框.Text)) * 2 ^ 13 / 1000 Then
MsgBox ("方式0最大定时小于" & Str((1 / (Val(晶振频率输入框.Text) / 12) * 2 ^ 13 / 1000)) & "ms")
Exit Sub
End If
timerinter = 2 ^ 13 - CLng(Val(定时时间输入框.Text) * 1000 * Val(晶振频率输入框.Text) / 12)
TH0Buf = CInt(timerinter \ 256) '求定时值高位
TL0Buf = CInt(timerinter Mod 256) '求定时值的低位
显示框.Text = " " & Hex(timerinter) & "H"
代码生成窗口.Show '代码生成窗口展现
Call printshouming '调用显示函数说明
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "void Timer0init(void)" & vbCrLf '列出要生成的代码的函数名
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "{" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TH0=" & "0x" & Hex(TH0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TL0=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TMOD=(TMOD & 0xf0) | 0X00;/*设置为方式零,13位定时器*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IE=IE | 0x82; /*开定时器0中断,开CPU中断*/" & vbCrLf
If 优先级选择框.Text = "高" Then
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IP=IP | 0x02; /*设置定时器0为最高优先级*/" & vbCrLf
End If
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TR0=1; /*启动定时器0*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "}" & vbCrLf
Case 1 '定时器方式1,16位定时器
If Val(定时时间输入框.Text) > 12 / (Val(晶振频率输入框.Text)) * 2 ^ 16 / 1000 Then
MsgBox ("方式0最大定时小于" & Str((1 / (Val(晶振频率输入框.Text) / 12) * 2 ^ 16 / 1000)) & "ms")
Exit Sub
End If
timerinter = 2 ^ 16 - CLng(Val(定时时间输入框.Text) * 1000 * Val(晶振频率输入框.Text) / 12)
TH0Buf = CInt(timerinter \ 256) '求定时值高位
TL0Buf = CInt(timerinter Mod 256) '求定时值的低位
显示框.Text = " " & Hex(timerinter) & "H"
代码生成窗口.Show
Call printshouming '调用显示函数说明
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "void Timer0init(void)" & vbCrLf '列出要生成的代码的函数名
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "{" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TH0=" & "0x" & Hex(TH0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TL0=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TMOD=(TMOD & 0xf0) | 0X01;/*设置为方式一,16位定时器*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IE=IE | 0x82; /*开定时器0中断,开CPU中断*/" & vbCrLf
If 优先级选择框.Text = "高" Then
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IP=IP | 0x02; /*设置定时器0为最高优先级*/" & vbCrLf
End If
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TR0=1; /*启动定时器0*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "}" & vbCrLf
Case 2 '定时器方式2,8位定时器,重装载模式
If Val(定时时间输入框.Text) > 12 / (Val(晶振频率输入框.Text)) * 2 ^ 8 / 1000 Then
MsgBox ("方式0最大定时小于" & Str((1 / (Val(晶振频率输入框.Text) / 12) * 2 ^ 8 / 1000)) & "ms")
Exit Sub
End If
timerinter = 2 ^ 8 - CLng(Val(定时时间输入框.Text) * 1000 * Val(晶振频率输入框.Text) / 12)
显示框.Text = " " & Hex(timerinter) & "H"
TH0Buf = CInt(timerinter \ 256) '求定时值高位
TL0Buf = CInt(timerinter Mod 256) '求定时值的低位
代码生成窗口.Show
Call printshouming '调用显示函数说明
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "void Timer0init(void)" & vbCrLf '列出要生成的代码的函数名
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "{" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TH0=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TL0=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TMOD=(TMOD & 0xf0) | 0X02;/*设置为方式二,重装模式的8位定时器*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IE=IE | 0x82; /*开定时器0中断,开CPU中断*/" & vbCrLf
If 优先级选择框.Text = "高" Then
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IP=IP | 0x02; /*设置定时器0为最高优先级*/" & vbCrLf
End If
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TR0=1; /*启动定时器0*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "}" & vbCrLf
Case 3
End Select
Case 1 '如果是定时器1
Select Case 方式选择下拉框.Text
Case 0 '定时器方式0,13位定时器
If Val(定时时间输入框.Text) > 12 / (Val(晶振频率输入框.Text)) * 2 ^ 13 / 1000 Then
MsgBox ("方式0最大定时小于" & Str((1 / (Val(晶振频率输入框.Text) / 12) * 2 ^ 13 / 1000)) & "ms")
Exit Sub
End If
timerinter = 2 ^ 13 - CLng(Val(定时时间输入框.Text) * 1000 * Val(晶振频率输入框.Text) / 12)
TH0Buf = CInt(timerinter \ 256) '求定时值高位
TL0Buf = CInt(timerinter Mod 256) '求定时值的低位
显示框.Text = " " & Hex(timerinter) & "H"
代码生成窗口.Show '代码生成窗口展现
Call printshouming '调用显示函数说明
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "void Timer0init(void)" & vbCrLf '列出要生成的代码的函数名
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "{" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TH1=" & "0x" & Hex(TH0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TL1=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TMOD=(TMOD & 0x0f) | 0X00;/*设置为方式零,13位定时器*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IE=IE | 0x88; /*开定时器1中断,开CPU中断*/" & vbCrLf
If 优先级选择框.Text = "高" Then
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IP=IP | 0x08; /*设置定时器1为最高优先级*/" & vbCrLf
End If
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TR1=1; /*启动定时器1*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "}" & vbCrLf
Case 1 '定时器方式1,16位定时器
If Val(定时时间输入框.Text) > 12 / (Val(晶振频率输入框.Text)) * 2 ^ 16 / 1000 Then
MsgBox ("方式0最大定时小于" & Str((1 / (Val(晶振频率输入框.Text) / 12) * 2 ^ 16 / 1000)) & "ms")
Exit Sub
End If
timerinter = 2 ^ 16 - CLng(Val(定时时间输入框.Text) * 1000 * Val(晶振频率输入框.Text) / 12)
TH0Buf = CInt(timerinter \ 256) '求定时值高位
TL0Buf = CInt(timerinter Mod 256) '求定时值的低位
显示框.Text = " " & Hex(timerinter) & "H"
代码生成窗口.Show
Call printshouming '调用显示函数说明
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "void Timer0init(void)" & vbCrLf '列出要生成的代码的函数名
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "{" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TH1=" & "0x" & Hex(TH0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TL1=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TMOD=(TMOD & 0x0f) | 0X10;/*设置为方式一,16位定时器*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IE=IE | 0x88; /*开定时器1中断,开CPU中断*/" & vbCrLf
If 优先级选择框.Text = "高" Then
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IP=IP | 0x08; /*设置定时器1为最高优先级*/" & vbCrLf
End If
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TR1=1; /*启动定时器1*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "}" & vbCrLf
Case 2 '定时器方式2,8位定时器,重装载模式
If Val(定时时间输入框.Text) > 12 / (Val(晶振频率输入框.Text)) * 2 ^ 8 / 1000 Then
MsgBox ("方式0最大定时小于" & Str((1 / (Val(晶振频率输入框.Text) / 12) * 2 ^ 8 / 1000)) & "ms")
Exit Sub
End If
timerinter = 2 ^ 8 - CLng(Val(定时时间输入框.Text) * 1000 * Val(晶振频率输入框.Text) / 12)
显示框.Text = " " & Hex(timerinter) & "H"
TH0Buf = CInt(timerinter \ 256) '求定时值高位
TL0Buf = CInt(timerinter Mod 256) '求定时值的低位
代码生成窗口.Show
Call printshouming '调用显示函数说明
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "void Timer0init(void)" & vbCrLf '列出要生成的代码的函数名
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "{" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TH1=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TL1=" & "0x" & Hex(TL0Buf) & ";" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TMOD=(TMOD & 0x0f) | 0X20;/*设置为方式二,重装模式的8位定时器*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IE=IE | 0x88; /*开定时器1中断,开CPU中断*/" & vbCrLf
If 优先级选择框.Text = "高" Then
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "IP=IP | 0x08; /*设置定时器1为最高优先级*/" & vbCrLf
End If
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & " " & "TR1=1; /*启动定时器1*/" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "}" & vbCrLf
Case 3
End Select
Case 2 '如果是定时器2
End Select
End Sub
Public Sub printshouming()
代码生成窗口.代码显示框.Text = "/************************************************************" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "文件名: void Timer0init(void)" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "功能: " & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "描述: " & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "输入变量: void" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "输出变量: void" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "作者: 陈子牙" & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "修改日期: " & vbCrLf
代码生成窗口.代码显示框.Text = 代码生成窗口.代码显示框.Text & "************************************************************/" & vbCrLf
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -