分享
分享赚钱 收藏 举报 版权申诉 / 4

类型飞思卡尔8位单片机MC9S0811程序单片机方主程序及PC机方程序.doc

  • 上传人:hwpkd79526
  • 文档编号:7549548
  • 上传时间:2019-05-21
  • 格式:DOC
  • 页数:4
  • 大小:50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    飞思卡尔8位单片机MC9S0811程序单片机方主程序及PC机方程序.doc
    资源描述:

    1、(2)单片机方主程序实例编号:A06 路径:ASMA06_Flash 编程 (FshMain.asm)*-*文件名:FshMain.asm *硬件连接:无 *功能: 等待接收 N+1 个数,放入内存 * 擦除以 Fdata 为首地址的 Flash 一页,将 N 个数据写入 * 从以 Fdata 为首址的 Flash 区读取 N 个数据,串口发送 *说明:调用擦/写子程序之前先将待擦/写页后一页开始的 * 所有区域写保护 *-*-嵌入式应用技术基础教程教学实例-*头文件$include “GP32ASM.H“ ;包含 GP32 的头文件*两个起始地址名RAMstartAddr equ $0040

    2、 ;RAM 起始地址FlashStartAddr equ $8000 ;程序开始地址*内存变量org RAMstartAddr ;RAM 的起始地址N rmb 1 ;写入数据的个数RAMandFlash rmb 4 ;写入程序使用DATA1 rmb !64 ;数据缓冲区P_AddressInRAM rmb !90 ;Flash 中程序移入 RAM 的首地址*Flash 数据区(一页 128 字节)org FlashStartAddr;设写入区为$8000$807F 一页Fdata FCB !11,!12,!13,!14,!15,!16,!17,!18,!66 ;几个初始值仅作比较*=*主程序O

    3、RG $8100MainStart: ;复位后程序从此开始执行;系统初始化SEILDHX #$023F ;堆栈初始化TXS JSR GP32Init ;调系统初始化子程序 GP32Init ;串行口初始化JSR SCIInit ;程序总循环入口MainLoop:;发送 1 个握手信号 86 LDA #!86 ;发送握手信号 86JSR SCISend1;等待接收 1 的握手信号 56JSR SCIRe1 CMP #!56 ;是否是 56? BNE MainLoop ;否,继续握手;等待接收 1 个字节= 要写入的字符个数(RAMandFlash0-1STHX RAMandFlashLDHX #

    4、Fdata ;Flash 首地址-RAMandFlash2-3STHX RAMandFlash+!2LDA N ;写入 Flash 的数据个数JSR WriteSub;向 PC 机发送写入 Flash 区的 N 个数据,供 PC 机接收并比较LDHX #FdataLDA NJSR SCISendN;转程序总循环入口JMP MainLoop *外部子程序存放处,这些子程序都在当前目录中$INCLUDE “GP32init.asm“ ;系统初始化$INCLUDE “SCIInit.asm“ ;串行口初始化$INCLUDE “H08SCI.asm“ ;串行通信收发$INCLUDE “EraseSub

    5、.asm“ ;Flash 擦除$INCLUDE “WriteSub.asm“ ;Flash 写入*中断向量ORG $FFFE ;复位向量DW MainStart(3)PC 机方程序实例编号:A06 路径:ASM A06_Flash 编程 vb_flash程序描述: (1)把发送窗口中的数据从 COM1 发送出去 (2)把接收到的数据显示在接收窗口中-Option Explicit 检查未经声明的变量Dim i As Integer, I0 As Integer 临时使用Dim j As Integer, j1 As Integer Dim d1 As DoubleDim SendData(0)

    6、 As Byte 发送数据数组Dim SendData1() As Byte 发送数据数组 1Dim ReceiveData() As Byte 接收数据数组Dim ReceiveData1() As Byte 接收数据数组Dim S1 As String 缓冲用Private Sub cmdOK_Click() “确定“按钮If TxtN.Text = “ Or Val(TxtN.Text) 64 ThenMsgBox “请输入正确的写入 Flash 区的数据个数(1-64 )!“Exit SubEnd IfFor i = 0 To TxtN.Text - 1 清空输入数据区Text3(i)

    7、.Enabled = TrueNext iEnd SubPrivate Sub CndClear_Click() 清空数据区For i = 0 To 127Text3(i).Text = “Next iEnd SubPrivate Sub Form_Load() 初始化串行口初始化Call SCIinit(1, “9600,N,8,1“)清空数据区For i = 0 To 63Text3(i).Text = “Text3(i).Enabled = FalseNext iFor i = 64 To 127Text3(i).Text = “Text3(i).Enabled = FalseNext

    8、iEnd SubPrivate Sub CndStart_Click() 单击“写入并校验“ 按钮写入的数据个数在 164 之间If TxtN.Text = “ Or Val(TxtN.Text) 64 ThenMsgBox “请输入正确的写入 Flash 区的数据个数(1-64 )!“Exit SubEnd If输入的数据必须小于 255For i = 0 To TxtN.Text - 1If Text3(i).Text = “ Or Val(Text3(i).Text) 255 ThenMsgBox “请输入“ & TxtN.Text & “个正确的数据(0-255)!“Exit SubE

    9、nd IfNext iMSCommFlash.InBufferCount = 0d1 = Timer()Do 等待接收握手信号(86“V“)DoEventsIf Timer()-d1= 5 Then GoTo CndStart_Click_Error0 无握手信号Loop Until MSCommFlash.InBufferCount = 1ReceiveData = MSCommFlash.Input 接收数据If ReceiveData(0) = 86 ThenSendData(0) = 56MSCommFlash.Output = SendData 发送回答信号(56)ElseGoTo

    10、CndStart_Click_Error1 不是正确的握手信号End If给发送数据赋值ReDim SendData1(TxtN.Text)SendData1(0) = Val(TxtN.Text)For i = 1 To TxtN.TextSendData1(i) = Text3(i - 1).TextNext iMSCommFlash.Output = SendData1 发送 N+1 个数,N 个数据MSCommFlash.InBufferCount = 0d1 = Timer()Do 等待接收数据 N 个DoEventsIf Timer() - d1 5 Then GoTo CndSt

    11、art_Click_Error2Loop Until MSCommFlash.InBufferCount = TxtN.Text TxtN.TextReceiveData = MSCommFlash.Input 接收数据数据分解、显示For i = 0 To TxtN.Text - 1Text3(64 + i).Enabled = TrueText3(64 + i).Text = ReceiveData(i)Next iGoTo CndStart_Click_ExitCndStart_Click_Error0:MsgBox (“无握手信号!“)GoTo CndStart_Click_ExitC

    12、ndStart_Click_Error1: 不是正确的握手信号MsgBox (“握手信号不正确!“)GoTo CndStart_Click_ExitCndStart_Click_Error2:MsgBox (“等待很久,未收到返回数据!“)CndStart_Click_Exit:ReceiveData = MSCommFlash.InputMSCommFlash.InBufferCount = 0End SubPrivate Sub CndExit_Click()“返回“ 按钮,关闭串行口,关闭时钟If MSCommFlash.PortOpen = True ThenMSCommFlash.P

    13、ortOpen = False 关闭串行口End IfUnload MeEnd SubPrivate Sub Form_Deactivate() 单击窗体之外CndExit_ClickEnd SubPrivate Sub Form_LostFocus() 失去焦点CndExit_ClickEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)CndExit_ClickEnd SubPrivate Sub TxtN_KeyPress(KeyAscii As Integer)48 为 0,57 为 9 8 为退格键If (KeyAscii 57) And KeyAscii 8 ThenKeyAscii = 0 KeyAscii 值为 0 的为“End IfEnd Sub

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:飞思卡尔8位单片机MC9S0811程序单片机方主程序及PC机方程序.doc
    链接地址:https://www.docduoduo.com/p-7549548.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开