MTS-52 ICE K&H.

Slides:



Advertisements
Similar presentations
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
Advertisements

动态网站开发 【HTTP与网络基础】 李博杰
Lecture-V-开源授权协议 杜朴风&张亚平&许光全 计算机学院&软件学院
存储基础知识 V1.1.
培养目标 1.建立基本的程序设计概念体系,掌握基础程序设计方法。
单片机应用技术 项目一 循环彩灯装置 第7讲 Keil软件的使用 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
自衛消防編組任務職責 講 義 This template can be used as a starter file for presenting training materials in a group setting. Sections Right-click on a slide to add.
TQC+ 物件導向程式認證-JAVA.
操作系统结构.
Profibus Training Course
Advantage And Disadvantage
程設一.
Subversion (SVN) Presented by 李明璋 R /2/21
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
認識電腦程式著作及合法使用電腦軟體之說明
加速度計 指導老師 : 洪正瑞 製作人 : 蔡昌佑.
Lab312.
5-3 8x8矩陣LED控制實習.
FC OB1 FB SFC 操作系统 SFB OBs 结构化编程 其它
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
4-10 STM Timer/Counter 與比較吻合輸出
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
第六章 应用程序结构.
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
PIC16F1827介紹 以微控器為基礎之電路設計實務-微處理器實驗室.
Basis基本操作、使用者 管理與權限設定
汇编语言程序设计 吴 向 军 中山大学计算机科学系
Agilent N9010A EXA信号分析仪.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
簡易 Visual Studio 2010 C++ 使用手冊
结构化编程 FC OB1 FB SFC 操作系统 SFB OBs 其它
統計套裝軟體 輔大統計資訊系 黃孝雲.
微 電 腦 實 驗 Megawin MPC82G516 操作與環境設定.
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
第4章 PIC软件开发设计基础.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
Eviews 操作 2012/11.
單晶片MCS-51 C語言入門實習 第2章 KEIL-51工具軟體 作者:董勝源.
無線通訊系統模擬 姓名:顏得洋 學號:B
Origin绘图和数据分析 2006年11月.
C 語言簡介 - 2.
内容提要:
第三章 项目设定.
多媒體概論報告-BMP 組員名稱: 盧彥良-資料蒐集 周誠哲-資料蒐集
Connection Check Sound with Symbol
SPSS-概述與資料處理 輔大統計資訊系 黃孝雲.
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
簡易 Visual Studio 2005 C++ 使用手冊
職業 Random Slide Show Menu
Version Control System Based DSNs
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
SAP FI Module Account Payable Version:2.0版本 Date:2001/10/01 制作: 胡 敏.
Speaker: Liu Yu-Jiun Date: 2009/4/29
5-6 串列埠模式0輸出埠擴充實習.
Common Qs Regarding Earnings
MATLAB 程式設計入門篇 初探MATLAB
爬蟲類動物2 Random Slide Show Menu
VC++程序调试演示 An Overview of ICU 19th International Unicode Conference
Inspiration From Above 1 Chinese Evangelical Free Church
计算机问题求解 – 论题1-5 - 数据与数据结构 2018年10月16日.
Create and Use the Authorization Objects in ABAP
 隐式欧拉法 /* implicit Euler method */
Arguments to the main Function and Final Project
第6章 硬盘实用程序 GHOST 6.0 硬盘克隆(Clone)、硬盘分区拷贝工具
测试功能 目录 页 程序的状态监视功能 ……………... 2 程序状态监视的模式 …………………………. 3
Section 1 Basic concepts of web page
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

MTS-52 ICE K&H

簡介 ICE 的全名為 In Circuit Emulator,一般完整的 ICE 必須具備有下列的特徵: function [info, data] = acqread(filename) % ACQREAD Read a Biopac AcqKnowledge file. % [INFO, DATA] = ACQREAD(FILENAME) reads the content of the AcqKnowledge % file specified in the string FILENAME. INFO is a structure containing % the metadata (header, markers, etc.). DATA is a cell array, indexed % by the channel number, containing the acquired physiological signals. % % [INFO, DATA] = ACQREAD displays a dialog box that is used to retrieve % the desired file. % % ACQREAD supports all files created with Windows/PC versions of % AcqKnowledge (3.9.0 or below), BSL (3.7.0 or below), and BSL PRO % (3.7.0 or below). % % ACQREAD supports channels that were acquired using different sampling % rates, therefore having a different number of samples. % % Details of the AcqKnowledge file format are presented in Biopac's % Application Note #156 (last updated on February 23, 2007), and % available at : "http://www.biopac.com/Manuals/app_pdf/app156.pdf". % % ACQREAD, version 2.0 (2007-08-21) % Copyright (C) 2006-2007 Sebastien Authier and Vincent Finnerty % % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; either version 2 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA % 02110-1301, USA %% Opening file... error(nargchk(0,1,nargin)) if nargin==1 if exist(filename,'file')~=2 error(['File "',filename,'" not found.']) else [fid,message] = fopen(filename,'r'); if fid==-1 error(message) end end else [filename,pathname] = uigetfile({'*.acq','AcqKnowledge File (*.acq)';... '*.*','All Files (*.*)'}); if filename==0 return else filename = fullfile(pathname,filename); [fid,message] = fopen(filename,'r'); if fid==-1 error(message) end end end %% GRAPH HEADER SECTION info.nItemHeaderLen = fread(fid,1,'*int16'); info.lVersion = fread(fid,1,'*int32'); % File version identifier % 30 = Pre-version 2.0 % 31 = Version 2.0 Beta 1 % 32 = Version 2.0 release % 33 = Version 2.0.7 (Mac) % 34 = Version 3.0 In-house Release 1 % 35 = Version 3.03 % 36 = Version 3.5x (Win 95, 98, NT) % 37 = Version of BSL/PRO 3.6.x % 38 = Version of Acq 3.7.0-3.7.2 (Win 98, 98SE, NT, Me, 2000) % 39 = Version of Acq 3.7.3 or above (Win 98, 98SE, 2000, Me, XP) % 41 = Version of Acq 3.8.1 or above (Win 98, 98SE, 2000, Me, XP) % 42 = Version of BSL/PRO 3.7.X or above (Win 98, 98SE, 2000, Me, XP) % 43 = Version of Acq 3.8.2 or above (Win 98, 98SE, 2000, Me, XP) % 44 = Version of BSL/PRO 3.8.x or above % 45 = Version of Acq 3.9.0 or above if (info.lVersion<30) || (info.lVersion>45) error (['Unable to read file "',filename,'" : invalid file type, or unsupported file version.']) end info.lExtItemHeaderLen = fread(fid,1,'*int32'); info.nChannels = fread(fid,1,'*int16'); % Number of channels info.nHorizAxisType = fread(fid,1,'*int16'); info.nCurChannel = fread(fid,1,'*int16'); info.dSampleTime = fread(fid,1,'*double'); % Number of milliseconds per sample info.dTimeOffset = fread(fid,1,'*double'); % Initial time offset in milliseconds info.dTimeScale = fread(fid,1,'*double'); % Time scale in milliseconds per division info.dTimeCursor1 = fread(fid,1,'*double'); info.dTimeCursor2 = fread(fid,1,'*double'); info.rcWindow = fread(fid,1,'*double'); info.nMeasurement = fread(fid,6,'*int16')'; info.fHilite = fread(fid,1,'*int16'); info.dFirstTimeOffset = fread(fid,1,'*double'); info.nRescale = fread(fid,1,'*int16'); info.szHorizUnits1 = deblank(fread(fid,40,'*char')'); % Horizontal units text info.szHorizUnits2 = deblank(fread(fid,10,'*char')'); % Horizontal units text (abbreviated) info.nInMemory = fread(fid,1,'*int16'); info.fGrid = fread(fid,1,'*int16'); info.fMarkers = fread(fid,1,'*int16'); info.nPlotDraft = fread(fid,1,'*int16'); info.nDispMode = fread(fid,1,'*int16'); info.nReserved = fread(fid,1,'*int16'); % Version 3.0 and above... if info.lVersion>=34 info.BShowToolBar = fread(fid,1,'*int16'); info.BShowChannelButtons = fread(fid,1,'*int16'); info.BShowMeasurements = fread(fid,1,'int16'); info.BShowMarkers = fread(fid,1,'*int16'); info.BShowJournal = fread(fid,1,'*int16'); info.CurXChannel = fread(fid,1,'*int16'); info.MmtPrecision = fread(fid,1,'*int16'); end % Version 3.02 and above... if info.lVersion>=35 info.NMeasurementRows = fread(fid,1,'*int16'); info.mmt = fread(fid,40,'*int16')'; info.mmtChan = fread(fid,40,'*int16')'; end % Version 3.5x and above... if info.lVersion>=36 info.MmtCalcOpnd1 = fread(fid,40,'*int16')'; info.MmtCalcOpnd2 = fread(fid,40,'*int16')'; info.MmtCalcOp = fread(fid,40,'*int16')'; info.MmtCalcConstant = fread(fid,40,'*double')'; end % Version 3.7.0 and above... if info.lVersion>=38 tmp = fread(fid,1,'*int32'); tmp = sprintf('%6s',dec2hex(tmp,6)); info.bNewGridwithMinor = [hex2dec(tmp(5:6)) hex2dec(tmp(3:4)) hex2dec(tmp(1:2))]./255; tmp = fread(fid,1,'*int32'); tmp = sprintf('%6s',dec2hex(tmp,6)); info.colorMajorGrid = [hex2dec(tmp(5:6)) hex2dec(tmp(3:4)) hex2dec(tmp(1:2))]./255; info.colorMinorGrid = fread(fid,1,'*int32'); info.wMajorGridStyle = fread(fid,1,'*int16'); info.wMinorGridStyle = fread(fid,1,'*int16'); info.wMajorGridWidth = fread(fid,1,'*int16'); info.wMinorGridWidth = fread(fid,1,'*int16'); info.bFixedUnitsDiv = fread(fid,1,'*int32'); info.bMid_Range_Show = fread(fid,1,'*int32'); info.dStart_Middle_Point = fread(fid,1,'*double'); info.dOffset_Point = fread(fid,60,'*double')'; info.hGrid = fread(fid,1,'*double'); info.vGrid = fread(fid,60,'*double')'; info.bEnableWaveTools = fread(fid,1,'*int32'); end % Version 3.7.3 and above... if info.lVersion>=39 info.horizPrecision = fread(fid,1,'*int16'); end % Version 3.8.1 and above... if info.lVersion>=41 fseek(fid,20,'cof') % RESERVED info.bOverlapMode = fread(fid,1,'*int32'); info.bShowHardware = fread(fid,1,'*int32'); info.bXAutoplot = fread(fid,1,'*int32'); info.bXAutoScroll = fread(fid,1,'*int32'); info.bStartButtonVisible = fread(fid,1,'*int32'); info.bCompressed = fread(fid,1,'*int32'); info.AlwaysStartButtonVisible = fread(fid,1,'*int32'); end % Version 3.8.2 and above... if info.lVersion>=43 info.pathVideo = deblank(fread(fid,260,'*char')'); info.optSyncDelay = fread(fid,1,'*int32'); info.syncDelay = fread(fid,1,'*double'); info.bHRP_PasteMeasurements = fread(fid,1,'*int32'); end % Version 3.9.0 and above... if info.lVersion>=45 info.graphType = fread(fid,1,'*int32')'; for n = 1:40 info.mmtCalcExpr{n} = deblank(fread(fid,256,'*char')'); end info.mmtMomentOrder = fread(fid,40,'*int32')'; info.mmtTimeDelay = fread(fid,40,'*int32')'; info.mmtEmbedDim = fread(fid,40,'*int32')'; info.mmtMIDelay = fread(fid,40,'*int32')'; end %% PER CHANNEL DATA SECTION for n = 1:info.nChannels info.lChanHeaderLen(n) = fread(fid,1,'*int32'); info.nNum(n) = fread(fid,1,'*int16'); info.szCommentText{n} = deblank(fread(fid,40,'*char')'); % Comment text tmp = fread(fid,1,'*int32'); tmp = sprintf('%6s',dec2hex(tmp,6)); info.rgbColor{n} = [hex2dec(tmp(5:6)) hex2dec(tmp(3:4)) hex2dec(tmp(1:2))]./255; info.nDispChan(n) = fread(fid,1,'*int16'); info.dVoltOffset(n) = fread(fid,1,'*double'); % Amplitude offset (volts) info.dVoltScale(n) = fread(fid,1,'*double'); % Amplitude scale (volts/div.) info.szUnitsText{n} = deblank(fread(fid,20,'*char')'); % Units text info.lBufLength(n) = fread(fid,1,'*int32'); % Number of data samples info.dAmplScale(n) = fread(fid,1,'*double'); % Units/count info.dAmplOffset(n) = fread(fid,1,'*double'); % Units info.nChanOrder(n) = fread(fid,1,'*int16'); info.nDispSize(n) = fread(fid,1,'*int16'); % Version 3.0 and above... if info.lVersion>=34 info.plotMode(n) = fread(fid,1,'*int16'); info.vMid(n) = fread(fid,1,'*double'); end % Version 3.7.0 and above... if info.lVersion>=38 info.szDescription{n} = deblank(fread(fid,128,'*char')'); % String of channel description info.nVarSampleDivider(n) = fread(fid,1,'*int16'); % Channel divider of main frequency end % Version 3.7.3 and above... if info.lVersion>=39 info.vertPrecision(n) = fread(fid,1,'*int16'); end % Version 3.8.2 and above... if info.lVersion>=43 tmp = fread(fid,1,'*int32'); tmp = sprintf('%6s',dec2hex(tmp,6)); info.ActiveSegmentColor{n} = [hex2dec(tmp(5:6)) hex2dec(tmp(3:4)) hex2dec(tmp(1:2))]./255; info.ActiveSegmentStyle(n) = fread(fid,1,'*int32'); end end %% FOREIGN DATA SECTION info.nLength = fread(fid,1,'*int16'); info.nID = fread(fid,1,'*int16'); info.ByForeignData = fread(fid,double(info.nLength-4),'*int8')'; %% PER CHANNEL DATA TYPES SECTION for m = 1:info.nChannels info.nSize(m) = fread(fid,1,'*int16'); % Channel data size in bytes info.nType(m) = fread(fid,1,'*int16'); % Channel data type : 1 = double, and 2 = short (int16) end %% CHANNEL DATA SECTION % Raw data vector in interleaved format (indexed by bytes) rawData = fread(fid,double(info.lBufLength)*double(info.nSize'),'*int8'); % Channel sequence (indexed by bytes) cnt = 1; for m = 1:max(info.nVarSampleDivider) for n = 1:info.nChannels if mod(m-1,info.nVarSampleDivider(n))==0 channelSequence(cnt:(cnt+info.nSize(n)-1)) = int8(n); cnt = cnt + info.nSize(n); end end end % Raw data vector is padded with NaN's in order to have an integer number % of channel sequence repetitions tmp3 = numel(channelSequence) - rem(numel(rawData),numel(channelSequence)); if tmp3>0 rawData(end+1:end+tmp3) = NaN; end % Raw data vector is reshaped into a matrix (rows correspond to the channel % sequence, and columns correspond to each repetition of the sequence) rawData = reshape(rawData,numel(channelSequence),[]); % Raw data is extracted channel by channel, and converted into the % specified numeric type data = cell(1,info.nChannels); for n = 1:info.nChannels tmpChannel = rawData(channelSequence==n,:); if info.nType(n)==1; typ = 'double'; elseif info.nType(n)==2; typ = 'int16'; end data{n} = typecast(tmpChannel(:),typ); data{n}(info.lBufLength(n)+1:end) = []; end %% MARKERS HEADER SECTION info.lLength = fread(fid,1,'*int32'); info.lMarkers = fread(fid,1,'*int32'); % Number of markers %% MARKER ITEM SECTION if (info.lLength > 0) && (info.lMarkers > 0) for n = 1:info.lMarkers info.lSample(n) = fread(fid,1,'*int32'); % Location of marker info.fSelected(n) = fread(fid,1,'*int16'); info.fTextLocked(n) = fread(fid,1,'*int16'); info.fPositionLocked(n) = fread(fid,1,'*int16'); info.nTextLength(n) = fread(fid,1,'*int16'); % Length of marker text string info.szText{n} = deblank(fread(fid,double(info.nTextLength(n)+1),'*char')'); % Marker text string end else info.lSample = []; info.fSelected = []; info.fTextLocked = []; info.fPositionLocked = []; info.nTextLength = []; info.szText = []; end %% Closing file... fclose(fid); 簡介 ICE 的全名為 In Circuit Emulator,一般完整的 ICE 必須具備有下列的特徵: 1.能模擬 CPU 或單晶片微控器的動作 2.提供與 CPU 或微控器相同的輸出、輸入能力 3.提供記憶體模擬單晶片微控器的內部記憶體或模擬目標系統上的記憶體 (目標系統:Target System,為要開發的微電腦系統) 4.具有將匯流排信號儲存的能力 5.具有單步執行指令的能力 K&H

K&H

MTS-52 說明 MTS-52為針對 MCS-51 單晶片微控器所設計的簡易 ICE 雖然 MTS-52並非全功能的 ICE,不過也具備了大半 ICE 的功能,而且價格相當便宜,只要搭配上個人電腦即成一套簡易的 MCS-51 單晶片微控器的發展系統 (MCS-51 Development System) K&H

MTS-52與個人電腦的連接: Power Adaptor Serial Port MTS-52 Target Board K&H

MTS-51與MTS-52連接時的注意事項: 不必接電源線 Power adaptor Serial Port MTS-52 Target Board (MTS-51) K&H

編輯及組譯程式 Step 1 : 用文書編輯軟體編輯程式 利用文書編輯軟體編輯下列程式,編輯完畢將其存檔,並將檔名設為 TEST.ASM MTS-52 讀取HEX檔時,若檔案中有相對應的SYM 檔存在,則 MTS-52反組譯時,會將其 label 顯示出來。若無 SYM 檔,則 label 無法顯示出來。 SYM 檔是在 link 的過程中產生,且在原始程式中必須加入假指令 .symbols on MTS-52 會使用到中斷向量,若使用者的程式佔用到這些空間,可能導致MTS-52 監控系統無法正常工作。因此建議將主程式的起始位置放在位址0050H 之後。 K&H

註: 所附 CD片內的程式TEST.ASM與本頁所示略有不同 .SYMBOLS ON ORG 0000H JMP MAIN ORG 0050H MAIN: MOV A,#80H LOOP: MOV P2,A RR A NOP CALL DELAY JMP LOOP DELAY: MOV R5,#FFH DELAY1: MOV R6,#FFH DELAY2: MOV R7,#05H DELAY3: DJNZ R7,DELAY3 DJNZ R6,DELAY2 DJNZ R5,DELAY1 RET 註: 所附 CD片內的程式TEST.ASM與本頁所示略有不同 K&H

Step 2:用組譯器 X8051 來組譯原始程式 Step 3:用連結器 LINK51 點選 TEST.ASM,並按住滑鼠左鍵,直接將檔案 TEST.ASM 拖曳至 X8051.EXE,然後放開滑鼠左鍵,則 X8051 自動執行,並完成組譯動作。組譯完會產生TEST.OBJ 檔案。 Step 3:用連結器 LINK51 雙擊 (double click) LINK51.EXE 鍵入 TEST [Enter] 鍵入 5 次 [Enter] 鍵入 c [Enter],完成連結工作,連結後會產生TEST.HEX, TEST.SYM K&H

MTS-52 操作簡介 程式編輯及組譯完畢後,即可使用 MTS-52 來進行程式的偵錯及執行 Step 1 : 進入 MTS-52 選擇 [開始]  [程式集]  [ 8051 ICE ]  [ 8051 ICE V2.09 ] K&H

K&H

Step 2 : MTS-52 與電腦連線 (connect) 1. 選擇 [Option]  [Connect] 使用ICE之前,必須先將 MTS-52 與電腦連線。 未連線前,所有的按鈕都是反白無法作用的。 連線後,系統才可以將 Hex 檔載入 MTS-52。 K&H

2. 選擇連線的 Serial Port 在 Serial Port 的選擇框內選取連線的 port number,然後按 [Connect] 按鈕。 K&H

What COM port number to specify K&H

連線完成後: K&H

Step 3 : 載入 Hex 檔 選擇 [File]  [Open File] K&H

選擇要載入的 Hex 檔,然後按 [開啟舊檔] 按鈕。 ( 選擇 X8051\test.hex ) K&H

K&H

K&H

Step 4 : 執行程式 Go Step 5 : 停止執行 選擇 [Run]  [Go] 或按 [F9] 或點選 。  接在 P2 上的 LED 亮點向右跑。 Step 5 : 停止執行 選擇 [Run]  [Pause] 或按 [Ctrl+F9] 或 點選 。  程式停止執行。 K&H

Step 6 : Reset ICE 選擇 [Run]  [Reset] 或點選 。 K&H

Step 7 : 設定中斷點 (break point) Source Code 視窗的最左側,有類似「.」的紅點,代表著該指令可以設為中斷點。 將滑鼠移到紅點附近時,會游標會變成小手的標示,此時單擊滑鼠左鍵,即可將該行指令設為中斷點。 程式中最多能設 16 個中斷點。 K&H

K&H

Step 8 : 執行程式 Go 選擇 [Run]  [Go] 或按 [F9] 或點選 。  接執行到 RR A 指令時,停止執行。 K&H

Step 9 : 執行程式 Go 選擇 [Run]  [Go] 或按 [F9] 或點選 。 接執行到 RR A 指令時,停止執行。 K&H

Step 10 : Reset ICE 選擇 [Run]  [Reset] 或點選 。 K&H

Step 11 : 單步執行 Trace Into 選擇 [Run]  [Trace Into] 或按 [F7] 或點選 。 K&H

Step 12 : 單步執行 Trace Into 選擇 [Run]  [Trace Into] 或按 [F7] 或點選 。 K&H

Step 13 : 單步執行 2 次 K&H

Step 14 : 單步執行 Trace Into K&H

Step 15 : Reset ICE 選擇 [Run]  [Reset] 或點選 。 K&H

Step 16 : Reset ICE 選擇 [Run]  [Reset] 或點選 。 K&H

Step 17 : 單步執行 Step Over 選擇 [Run]  [錯成Trace Into] [改成Step Over]或按 [F8] 或點選 。 K&H

Step 18 : 單步執行 3 次 K&H

Step 19 : 單步執行 Step Over 選擇 [Run]  [錯成Trace Into] [改成Step Over]或按 [F8] 或點選 。 K&H

Step 20 : 修改程式、重新組譯及連結 Step 21 :載入 Hex 檔 用文書編輯開啟程式,然後進行修改 將 RR A 修改為 RL A 修改完畢後存檔 用組譯器 X8051 來組譯原始程式 用連結器 LINK51,連結後會產生TEST.HEX, TEST.SYM Step 21 :載入 Hex 檔 選擇 [File]  [Open File] 選擇要載入的 Hex 檔,然後按 [開啟舊檔] 按鈕。( 選擇 X8051\test.hex ) K&H

Step 22 : 執行程式 Go Step 23 : 停止執行 Step 24 : 結束 MTS-52 選擇 [Run]  [Go] 或按 [F9] 或點選 。  接在 P2 上的 LED 亮點向左跑。 Step 23 : 停止執行 選擇 [Run]  [Pause] 或按 [Ctrl+F9] 或 點選 。 程式停止執行。 Step 24 : 結束 MTS-52 選擇 [File]  [Exit] K&H

MTS-52 功能表介紹 1 [File] 功能 1). [Open File] : 開啟檔案 2). [Save File] : 儲存檔案 3). [Save As] : 另存新檔 4). [Exit] : 離開 K&H

2. [View] 功能 1). [Output Message]:顯示 Output Message 視窗 2). [Register Inspector]:顯示 Register Inspector 視窗 3). [Internal Memory Inspector]: 顯示 Internal Memory Inspector 視窗 4). [Code Inspector]:顯示 Code Inspector 視窗 K&H

從目前的程式計數器所指到的指令開始執行,一直到設為中斷點的指令或點選 [Pause] 為止。設為中斷點的指令會被執行完畢後才停止執行。 3. [Run] 功能: 1). [Go] 或按 [F9]: 從目前的程式計數器所指到的指令開始執行,一直到設為中斷點的指令或點選 [Pause] 為止。設為中斷點的指令會被執行完畢後才停止執行。 K&H

建議將主程式的起始位置放在位址 0050H 之後,換句話說,建議將程式開頭寫成以下的形式: ORG 0000H [注意事項] 程式的起始位置 建議將主程式的起始位置放在位址 0050H 之後,換句話說,建議將程式開頭寫成以下的形式: ORG 0000H JMP MAIN ORG 0050H MAIN: MTS-52 會使用到某一特殊中斷向量(33H),若使用者的程式佔用到此一空間,可能導致 MTS-52 監控系統無法正常工作。因此建議將主程式的起始位置放在位址 0050H 之後。 此一特殊中斷向量的位址與標準 MCS-51 的中斷向量不重疊,所以標準 MCS-51 的中斷向量仍可正常使用。 K&H

P3.6 及 P3.7 為外部記憶體的讀取與寫入,若將其設成 0 會導致監控程式無法正常工作,應該避免修改。 [注意事項] MTS-52 會使用到某一特殊中斷向量(33H),因此使用者程式若將 EA (中斷致能旗標) 設為 0,可能導致 MTS-52 監控系統無法 PAUSE 使用者程式。 I/O Port 3.6 與 Port 3.7 P3.6 及 P3.7 為外部記憶體的讀取與寫入,若將其設成 0 會導致監控程式無法正常工作,應該避免修改。 Stack Point 後的 5 個 bytes 為系統監控所佔用,修改該處的記憶體空間將不會有任何作用。 建議:Stack 使用 20H 以後的記憶空間,較不容易因為 bank 的切換造成資料的遺失或錯誤。 K&H

重置 (reset) MTS-52。一些特殊暫存器會被設為重置後的預設值 (default value)。 2). [Pause] 或按 [Ctrl+F9]: 停止程式的執行,並回 MTS-52 監控程式。 3). [Reset]: 重置 (reset) MTS-52。一些特殊暫存器會被設為重置後的預設值 (default value)。 4). [Trace Into] 或按 [F7] : 單步執行,MTS-52 會執行程式計數器所指到的指令,執行一個指令後即停止執行。 5). [Step over] 或按 [F8]: 單步執行。程式計數器所指到的指令若為 Cal l指令,則執行完副程式之後才停止;若為其它指令,則執行程式計數器所指到的指令後,即停止執行。 K&H

6). [Toggle Breakpoint]: 中斷點設定切換。 也可用直接點選在 Source Code 視窗的最左側的紅點方式來切換中斷點。 7). [Breakpoint Edit]: 中斷點通過次數 (pass count) 編輯。 也可用將游標移至中斷點,然後按滑鼠右鍵的方式來編輯中斷點通過次數 。 K&H

按 [Edit] 按鈕。 K&H

輸入通過次數 (例如 : 20 )。 按 [OK] 按鈕。 K&H

按 [OK] 按鈕完成設定。 K&H

1). [Display Internal Data Memory (DI)]: 顯示內部資料記憶體。 2). [Display Register (DR)]: 顯示暫存器。 K&H

3). [Modify Register (MR)] : 修改暫存器。 也可用雙擊 (double click) Register Inspector視窗中的暫存器數值方式修改。 資料輸入格式: 0Xbb , bb : 十六進位數值 K&H

4). [Modify Internal Data Memory (MI)] : 修改內部資料記憶體。 也可用雙擊 (double click) Internal Data Memory 視窗中的記憶體數值方式修改。 資料輸入格式: 0Xbb , bb : 十六進位數值 K&H

在 Output Message 視窗顯示連線的詳細資料 5. [Option] 功能: 1). [Connect]:連接 MTS-52 2). [Disconnect]:中止 MTS-52 連線 3). [Show Event]: 在 Output Message 視窗顯示連線的詳細資料 K&H

6. [Window] 功能: 1). [Cascade]: K&H

2). [Tile]: K&H

K&H