📄 aduc702x_i2c_downloader.frm
字号:
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form Form1
AutoRedraw = -1 'True
BorderStyle = 1 'Fixed Single
Caption = "ADuC702x-I2C downloader"
ClientHeight = 4365
ClientLeft = 5220
ClientTop = 3960
ClientWidth = 5595
FillStyle = 0 'Solid
Icon = "ADuC702x_I2C_downloader.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 7.699
ScaleMode = 7 'Centimeter
ScaleWidth = 9.869
StartUpPosition = 2 '屏幕中心
Begin VB.Frame Frame5
Caption = "状态及进度"
Height = 615
Left = 0
TabIndex = 10
ToolTipText = "状态及进度"
Top = 3480
Width = 5535
Begin MSComctlLib.ProgressBar ProgressBar1
Height = 255
Left = 0
TabIndex = 11
Top = 240
Visible = 0 'False
Width = 5535
_ExtentX = 9763
_ExtentY = 450
_Version = 393216
Appearance = 1
Scrolling = 1
End
Begin VB.Label Status
Caption = "Http://Computer00.21ic.org"
Height = 255
Left = 120
TabIndex = 19
Top = 240
Width = 5935
End
End
Begin VB.Frame Frame4
Caption = "目标文件"
Height = 735
Left = 0
TabIndex = 8
Top = 0
Width = 5535
Begin VB.CommandButton OpenFile
Caption = "OpenFile"
Height = 495
Left = 4440
TabIndex = 14
ToolTipText = "打开文件(*.hex格式)"
Top = 150
Width = 975
End
Begin VB.TextBox FileDir
Height = 270
Left = 120
TabIndex = 9
Text = "No file open"
ToolTipText = "装载的文件"
Top = 240
Width = 4215
End
End
Begin MSComDlg.CommonDialog CommonDialog1
Left = 120
Top = 5280
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.Frame Frame3
Caption = "选项"
Height = 615
Left = 0
TabIndex = 6
ToolTipText = "下载器相关设置。"
Top = 840
Width = 5535
Begin VB.CheckBox Check2
Caption = "下载后自动运行"
Height = 255
Left = 3840
TabIndex = 18
ToolTipText = "选中此项,下载完成后,将自动运行程序。"
Top = 240
Width = 1575
End
Begin VB.CheckBox Check1
Caption = "下载后自动校验"
Height = 255
Left = 2160
TabIndex = 16
ToolTipText = "选中此项,下载完成后将自动校验数据。"
Top = 240
Width = 1575
End
Begin VB.ComboBox Combo1
Height = 300
Left = 840
Style = 2 'Dropdown List
TabIndex = 7
ToolTipText = "为设备选择一个合适的并口。一般地,并口在地址378H处。"
Top = 220
Width = 1215
End
Begin VB.Label Label1
Caption = "端口选择"
Height = 255
Left = 120
TabIndex = 17
Top = 255
Width = 735
End
End
Begin VB.Frame Frame2
Caption = "下载速度"
Height = 855
Left = 0
TabIndex = 4
ToolTipText = "下载速度选择"
Top = 1560
Width = 5535
Begin MSComctlLib.Slider Speed
Height = 495
Left = 0
TabIndex = 5
ToolTipText = "下载速度选择"
Top = 240
Width = 5535
_ExtentX = 9763
_ExtentY = 873
_Version = 393216
LargeChange = 500
Min = 1
Max = 10000
SelStart = 5000
Value = 5000
End
End
Begin VB.Frame Frame1
Caption = "命令"
Height = 855
Left = 0
TabIndex = 1
ToolTipText = "各种操作命令"
Top = 2520
Width = 5535
Begin VB.CommandButton Verify
Caption = "Verify"
Height = 495
Left = 2280
TabIndex = 15
ToolTipText = "校验数据"
Top = 240
Width = 975
End
Begin VB.CommandButton ReadID
Caption = "ReadID"
Height = 495
Left = 120
TabIndex = 13
ToolTipText = "读取芯片ID"
Top = 240
Width = 975
End
Begin VB.CommandButton Close
Caption = "Exit"
Height = 495
Left = 4440
TabIndex = 12
ToolTipText = "退出程序(退出之后就可以去上QQ或者去论坛灌水了^_^)"
Top = 240
Width = 975
End
Begin VB.CommandButton DownLoad
Caption = "DownLoad"
Height = 495
Left = 1200
TabIndex = 3
ToolTipText = "下载程序"
Top = 240
Width = 975
End
Begin VB.CommandButton Run
Caption = "Run"
Height = 495
Left = 3360
TabIndex = 2
ToolTipText = "运行"
Top = 240
Width = 975
End
End
Begin MSComctlLib.StatusBar StatusBar1
Align = 2 'Align Bottom
Height = 255
Left = 0
TabIndex = 0
Top = 4110
Width = 5595
_ExtentX = 9869
_ExtentY = 450
_Version = 393216
BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628}
NumPanels = 3
BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628}
Object.Width = 4411
MinWidth = 4411
Text = "No chip"
TextSave = "No chip"
Key = "info"
Object.ToolTipText = "芯片信息"
EndProperty
BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628}
Object.Width = 2999
MinWidth = 2999
Text = "Status"
TextSave = "Status"
Key = "status"
Object.ToolTipText = "显示当前状态"
EndProperty
BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628}
Key = "time"
Object.ToolTipText = "系统时间"
EndProperty
EndProperty
End
Begin VB.Timer Timer1
Enabled = 0 'False
Left = 720
Top = 5280
End
Begin VB.Menu File
Caption = "文件(&F)"
Index = 1
Begin VB.Menu Open
Caption = "打开(&O)"
End
Begin VB.Menu Exit
Caption = "退出(&X)"
End
End
Begin VB.Menu Settings
Caption = "设置(&S)"
Index = 2
Begin VB.Menu PortSelect
Caption = "端口选择(&P)"
Begin VB.Menu LPT1
Caption = "378H(LPT1)(&1)"
Checked = -1 'True
End
Begin VB.Menu LPT2
Caption = "278H(LPT2)(&2)"
End
Begin VB.Menu LPT3
Caption = "3BCH(LPT3)(&3)"
End
End
Begin VB.Menu AutoVerify
Caption = "下载后自动校验(&V)"
End
Begin VB.Menu AutoRun
Caption = "下载后自动运行(&R)"
End
End
Begin VB.Menu Help
Caption = "帮助(&H)"
Begin VB.Menu AboutDownloader
Caption = "关于ADuC702x_I2C_downloader...(&A)"
End
Begin VB.Menu DownloaderHelp
Caption = "ADuC702x_I2Cdownloader帮助...(&H)"
End
Begin VB.Menu AboutAuthor
Caption = "关于作者...(&C)"
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Public DelayTime As Long
Dim DataBuffer(0 To 100) As Byte
Public PortAddr As String
Public SDA As Boolean
Public SCL As Boolean
Public ChipOK As Boolean
Public WaitForDelay As Boolean
Public FileEnd As Boolean
Public ChipID As String
Dim PageNeedErase(0 To 200) As Byte
Private Sub Delay()
Dim i As Long
Dim X As Long
For i = 0 To DelayTime
X = 0 '延时用的空操作
Next
End Sub
Private Sub SetSCL()
Dim Result As Boolean
Dim PortVal As Long
Result = GetPortVal(Val(PortAddr), PortVal, 1)
If Result = False Then
MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Exit Sub
End If
PortVal = PortVal And &H7F
Result = SetPortVal(Val(PortAddr), PortVal, 1)
' MsgBox "SetSCL"
If Result = False Then MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Call Delay
End Sub
Private Sub ClrSCL()
Dim Result As Boolean
Dim PortVal As Long
Result = GetPortVal(Val(PortAddr), PortVal, 1)
If Result = False Then
MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Exit Sub
End If
PortVal = PortVal And &HFF
PortVal = PortVal Or &H80
Result = SetPortVal(Val(PortAddr), PortVal, 1)
' MsgBox "ClrSCL"
If Result = False Then MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Call Delay
End Sub
Private Sub SetSDA()
Dim Result As Boolean
Dim PortVal As Long
Result = GetPortVal(Val(PortAddr), PortVal, 1)
If Result = False Then
MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Exit Sub
End If
PortVal = PortVal And &HBF
Result = SetPortVal(Val(PortAddr), PortVal, 1)
' MsgBox "SetSDA"
If Result = False Then MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Call Delay
End Sub
Private Sub ClrSDA()
Dim Result As Boolean
Dim PortVal As Long
Result = GetPortVal(Val(PortAddr), PortVal, 1)
If Result = False Then
MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Exit Sub
End If
PortVal = PortVal And &HFF
PortVal = PortVal Or &H40
Result = SetPortVal(Val(PortAddr), PortVal, 1)
' MsgBox "ClrSDA"
If Result = False Then MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Call Delay
End Sub
Private Sub GetSCL()
Dim Result As Boolean
Dim PortVal As Long
Result = GetPortVal(1 + Val(PortAddr), PortVal, 1)
If Result = False Then
MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Exit Sub
End If
PortVal = PortVal And &H20
If (PortVal = &H20) Then
SCL = True
Else
SCL = False
End If
End Sub
Private Sub GetSDA()
Dim Result As Boolean
Dim PortVal As Long
Result = GetPortVal(1 + Val(PortAddr), PortVal, 1)
If Result = False Then
MsgBox "并口错误!程序被迫关闭", vbOKOnly + vbCritical, "错误"
Exit Sub
End If
PortVal = PortVal And &H40
If (PortVal = &H40) Then
SDA = True
Else
SDA = False
End If
End Sub
Private Sub DelayXms(ByVal X As Long)
Sleep X
End Sub
Private Function ErasePage(ByRef Address() As Byte, NPages As Byte) As Long
StatusBar1.Panels("status").Text = "Erase page"
DataBuffer(0) = &H7
DataBuffer(1) = &HE
DataBuffer(2) = &H6
DataBuffer(3) = Asc("E")
DataBuffer(4) = Address(0)
DataBuffer(5) = Address(1)
DataBuffer(6) = Address(2)
DataBuffer(7) = Address(3)
DataBuffer(8) = NPages
Cal_Sum DataBuffer, 9
WritePacket &H4, DataBuffer, 10
DelayXms 40 * NPages
ReadData &H4, DataBuffer, 1
ErasePage = DataBuffer(0)
End Function
Private Function MassErase() As Long
StatusBar1.Panels("status").Text = "Mass Erase"
DataBuffer(0) = &H7
DataBuffer(1) = &HE
DataBuffer(2) = &H6
DataBuffer(3) = Asc("E")
DataBuffer(4) = 0
DataBuffer(5) = 0
DataBuffer(6) = 0
DataBuffer(7) = 0
Cal_Sum DataBuffer, 9
WritePacket &H4, DataBuffer, 10
DelayXms 3500
ReadData &H4, DataBuffer, 1
MassErase = DataBuffer(0)
End Function
Private Function RunTo(ByRef Address() As Byte) As Long
StatusBar1.Panels("status").Text = "Run to"
DataBuffer(0) = &H7
DataBuffer(1) = &HE
DataBuffer(2) = &H5
DataBuffer(3) = Asc("R")
DataBuffer(4) = Address(0)
DataBuffer(5) = Address(1)
DataBuffer(6) = Address(2)
DataBuffer(7) = Address(3)
Cal_Sum DataBuffer, 8
WritePacket &H4, DataBuffer, 9
DelayXms 2
ReadData &H4, DataBuffer, 1
RunTo = DataBuffer(0)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -