上位机和下位机的程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.上位机程序:

1.添加MScomm控件,并在窗体装入时进行初始化

Private Sub Form_Load()

Timer1.Enabled = False

MSComm1.InBufferSize = 40 '初始化串口

MSComm1.InBufferCount = 0

MSComm1.InputMode = comInputModeBinary '二进制方式

mPort = 1

MSComm1.Settings = "9600,N,8,1"

MSComm1.RThreshold = 1

MSComm1.InputLen = 0 '每次读入缓冲区所有字符

If MSComm1.PortOpen = False Then

MSComm1.PortOpen = True '打开串口

End If

End Sub

2.添加一个命令按钮Command“应用”用于确认信息无误后发送。

Private Sub Command1_Click()

Dim A,B

A =Check1(0).Value + Check1(1).Value * 2 + Check1(2).Value * 4 + Check1(3).Value * 8

B = Check1(4).Value + Check1(5).Value * 2 + Check1(6).Value * 4 + Check1(7).Value * 8

If MSComm1.PortOpen = False Then

MSComm1.PortOpen = True '打开串口

End If

MSComm1.OutBufferCount = 0

MSComm1.Output = Chr(CInt(B)) '向单片机发送数据MSComm1.OutBufferCount = 0

MSComm1.Output = Chr(CInt(A))

End Sub

3.添加Text,用于显示单片机返回的数据(在此只是为了演示接收)

Private Sub MSComm1_OnComm()

If mEvent = comEvReceive Then

Text1.Text = AscB(MSComm1.Input)

End If

MSComm1.InBufferCount = 0

End Sub

二.下位机程序

源程序代码

S_SET BIT P1.0 ;数字钟秒控制位M_SET BIT P1.1 ;分钟控制位

H_SET BIT P1.2 ;小时控制位SECOND EQU 30H

MINUTE EQU 31H

HOUR EQU 32H

TCNT EQU 34H

ORG 00H

SJMP START

ORG 0BH

LJMP INT_T0

START: MOV DPTR,#TABLE

MOV HOUR,#0 ;初始化

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

MOV TMOD,#01H

MOV TH0,#(65536-50000)/256 ;定时50毫秒

MOV TL0,#(65536-50000)MOD 256

MOV IE,#82H

SETB TR0

;****************************************************

;判断是否有控制键按下,是哪一个键按下

A1: LCALL DISPLAY

JNB S_SET,S1

JNB M_SET,S2

JNB H_SET,S3

LJMP A1

S1: LCALL DELAY ;去抖动

JB S_SET,A1

INC SECOND ;秒值加1

MOV A,SECOND

CJNE A,#60,J0 ;判断是否加到60秒

MOV SECOND,#0

LJMP K1

S2: LCALL DELAY

JB M_SET,A1

K1: INC MINUTE ;分钟值加1

MOV A,MINUTE

CJNE A,#60,J1 ;判断是否加到60分

MOV MINUTE,#0

LJMP K2

S3: LCALL DELAY

JB H_SET,A1

K2: INC HOUR ;小时值加1

MOV A,HOUR

CJNE A,#24,J2 ;判断是否加到24小时

MOV HOUR,#0

MOV MINUTE,#0

MOV SECOND,#0

LJMP A1

;****************************************************

;等待按键抬起

J0: JB S_SET,A1

LCALL DISPLAY

SJMP J0

J1: JB M_SET,A1

LCALL DISPLAY

SJMP J1

J2: JB H_SET,A1

LCALL DISPLAY

SJMP J2

;***********************************************

;定时器中断服务程序,对秒,分钟和小时的计数

INT_T0: MOV TH0,#(65536-50000)/256

MOV TL0,#(65536-50000)MOD 256

INC TCNT

MOV A,TCNT

CJNE A,#20,RETUNE ;计时1秒

INC SECOND

MOV TCNT,#0

MOV A,SECOND

CJNE A,#60,RETUNE

INC MINUTE

MOV SECOND,#0

MOV A,MINUTE

CJNE A,#60,RETUNE

INC HOUR

MOV MINUTE,#0

MOV A,HOUR

相关文档
最新文档