文档库 最新最全的文档下载
当前位置:文档库 › Freescale单片机实验指导书

Freescale单片机实验指导书

Freescale单片机实验指导书
Freescale单片机实验指导书

Freescale单片机实验指导书

张相军杨华

电气工程及自动化学院

2006.08.28

1.概述

Freescale公司目前正在陆续推出的新一代8位嵌入式单片微机M68HC08系列,其片内集成的Flash存储器具有单一电源电压供电、支持在线编程等特点。本系统利用MC68HC908GP32单片机内32KB的Flash存储器划出2KB空间,驻留监控程序,为用户提供一套界面友好、价格低廉、支持在线调试的MCU在线编程实验开发系统。

2.系统主要功能

1.100%的在线实时仿真。用户下载自己的程序进入芯片后,在监控程序的控制下自动转入用户程序执行。

2.准Windows界面,帮助信息丰富,提供演示实例。直接支持Freescale 的.S19文件格式,显示所打开文件的内容,提示写入进程,自动擦除写

入区并自动校验。

3.系统组合方便,所有I/O口引脚直接引出到插孔,供外接使用,开发板上提供了并行I/O模拟区、A/D、LCD、键盘等模拟区,可直接使用。不

要求用户改变中断向量,用户完全可以按照标准格式书写程序,PC机方

的管理软件自动扫描用户程序,将中断向量改变后送给MCU中的监控程

序,MCU中的监控程序将用户中断向量放入监控区,待相应中断发生时,由监控程序转入。

4.写入后自动转入用户程序执行,为用户调试程序带来了方便,加快了调试速度。

5.复位后,在没有用户程序的情况下,一直处于监控联机状态,若有用户程序,5秒内处于监控联机状态,若无用户联机信号,则转入用户程序

执行。

3.硬件系统说明

3.1总体结构布局

实验板硬件部分主要由MC68HC908GP32芯片及外围电路、LCD、键盘、模块化电源、串行口驱动电路、IC插线及其它元件扩展槽、输出开关量接线排、输入开关量接线排等部分组成,其主要作用是通过MC68HC908GP32芯片的监控程序和PC机进行通信,完成芯片程序的写入、运行、断点调试。系统的硬件布局框图见图1。

连接方法:

1.将实验开发板的串行口通过串行通信线与PC机的串行口1或2连接。

2.接通实验开发板电源,电源指示灯亮。

3.连接实验所需线路。

4.按实验板上的复位按钮。

5.执行PC 机的配套软件,硬件系统等待SD-1软件系统的握手信号。

3.2 开关量输入

实验开发板用拨线开关提供8位数字量的输入。拨线开关状态为OFF 时是高

电平,拨线开关状态为ON 时是低电平。

3.3 开关量输出

1.实验开发板用LED 提供8位开关量的输出。导线接插点为高电平时LED

是暗的,低电平时LED 是亮的。

2.实验开发板含有蜂鸣器输出。

3.4 液晶显示接口

实验开发板提供可显示16个符号或字母的双排字符液晶,实验开发板提供两

种接线方式。

1.当将液晶显示器接

入上面的插线时为固定接

线,原理图如图2。

2.当将液晶显示器接

入下面的插线时为手动接线,连线的位置在液晶的下

方,可以将04—14管脚自定义连接,其管脚定义见下表。

图1 SD-HC08(GP32)实验板布局

图2 MCU 与LCD 的连接

3.5 键盘接口

实验开发板提供16键键盘,用于键盘中断信号的输入。实验开发板提供两

种接线方式。

1.当将键盘接入上面的插线时为固定接线。

注:固定接线自左向右分别接PTA0∽PTA7.

2.当将键盘接入下面的插线时为手动接线,连线的位置在键盘的左边。

3.6 模拟量输入

开发板用电位器提供两路模拟量输入,供进行A/D

转换实验使用。

3.7 串行口

实验开发板利用MAX232芯片提供标准的串行口的Txd 、RxD 、GND 。

3.8 元件扩展口

实验开发板提供元件扩展口,使用者可以进行IC 扩展。布线如图3。

4.软件使用说明

4.1 软件系统基本功能

(1)工程管理。可以管理C 语言和汇编语言源文件列表。

2) 源文件编辑。在开发环境中可以方便的对源文件进行编辑。

图3 IC 插线及其它元件扩展槽

(3) 源文件编译。打开C 工程或汇编主程序后,可以进行编译,并生成S19和lst 文件。S19是编译生成的机器码,lst 是机器码与源代码的对应文件。

(4)目标代码写入芯片。要将目标代码写入芯片,先要对目标代码S19文件进行分解,分离出程序数据区和复位矢量数据区,同时将程序数据区分割为128字节的页,并记录该页的首址。然后建立PC 机和MCU 的通信线路。PC 机发送写入芯片的命令,MCU 接收命令后,再等待接收写入的总页数,然后接收每一页的首址及要写入的数据,MCU 先擦除再将数据写入,直到写完所有的页及最后的复位矢量数据区的数据页。

4.2 软件系统使用

SD-1V20型MC68HC908GP32 MCU 在线实验开发系统,直接支持.S19文件格式,不改变用户中断向量,写入后直接转入用户程序执行。启动界面如图4。

(1)新建工程。单击文件菜单中的新建,将出现如图5的对话框。

图4 SD-HC08启动界面

选择好工程的路径,工程文件名,工程类型,然后选择器件的类型,工程向导为自动在工程属性中填入该器件的内存设置,如果选空工程,则要手动填写工程属性。工程属性可选择C 工程或者汇编主程序,汇编主程序不需要填写工程属

性。以上设置好以后点击确定,工程建立成功。

工程新建完毕以后,可从图5的新建对话框的新建文件页中新建C 文件、头文件、和汇编子程序文件,新建的时候可以选择是否加入到当前工程中。汇编子程序有两种,一种是C 工程中的*.s 文件,另一种是汇编主程序中使用到的*.asm

文件。后者需要用户手动在汇编主程序中用$include “文件名”加入。也可以在右侧工程目录树上点击右键菜单中的加入文件项(如图6),把已存在C 、H 、

S

图5新建工程

图6加入文件

文件及其它类型的文档加入到工程中,文件会被添加在目录树的相应类别中,这些文件必须已经拷贝至工程所在的路径。

点击文件菜单中的保存工程可对工程进行保存。

(2)源文件编辑。双击目录树上的源文件名,该文件就会被打开,可以进行修改编辑。编辑器具有语法高亮显示。

(3)编译设置。点击编译菜单的编译设置。在这里可以修改器件内存的设置,以及编译器所需头文件的路径。全局变量设置用来设置C程序中全局变量的地址使用单字节还是双字节。注:汇编主程序不可以进行编译设置。

(4)编译工程。点击编译菜单的编译源程序,将对工程进行编译。如果编译成功,在下方编译调试输出信息窗口输出编译成功字样。如果源程序中有错误,系统将给予提示。用户可以双击错误提示来跳转到错误的源程序行,编辑器中红色的一行即为错误行。编译过程中共会产生三种错误信息:警告、错误、连接错误,分别以蓝色、红色、橙色显示。

(5)下载程序。点击编译菜单的写入芯片。缺少的S19文件是本工程的,用户也可自行选择一个S19文件。点击写入按钮后,立即将实验板复位,将进行下载。下载信息和写入进度会提示下载的情况。

如果下载过程中出现错误,将有弹出对话框提示。可能会出现的错误有:与实验板握手失败、数据校验失败、串口初始化失败、通信超时、写入指令发送失败。如果出现上述错误,请检查串行线的连接和实验板工作是否正常。

5.实例演示

(1)08汇编主程序

一个08汇编源程序按书写顺序可由7个部分组成,分别描述如下。

①程序描述

给出程序名、硬件连接、基本功能等描述,还可以给出编制者、编制时间等信息,若调试过程有新的体会,也可以在此添加。目的是为将来自己使用,或同组开发提供必要的备忘信息。

②头文件与有关常量命名

汇编语言也借用C语言中“头文件”的概念,将映像寄存器的地址放入“头文件”中,程序中直接使用寄存器地址所对应的“名称”,更加直观。本书所附实例程序提供的“GP32.H”文件为MC68HC908GP32的映像寄存器名与地址对应表,见附录B。这样,实际程序用$include "GP32.H"语句将"GP32.H"文件包含到源程序中即可。例如,有了“头文件”,对“D口数据寄存器”读出操作,可以用“LDA PTD”取代“LDA $0003”,更容易理解。此外,若实际应用中,D口是接一个液晶显示器LCD的数据端口,编程时希望使用LCDData代表LCD的数据端

口,则可以使用常量命名:“LCDData EQU PTD”,之后LCDData与PTD完全等同。

③内存变量

如果程序中使用到内存变量,需在此定义。实际上,这里是对内存变量的声明,通常称为“开辟内存变量”,内存变量的初始化工作需在主程序开始部分进行。第一个内存变量需用“ORG”语句定位,随后,按地址从小到大顺序排列。每个内存变量都有固定的内存地址。借用C语言术语,这里所开辟的所有内存变量都是“全局变量”。对应C语言中的“局部变量”概念将在讲解子程序规范时说明。

④主程序

主程序一般包括初始化与主循环两大部分。初始化包括堆栈初始化、系统初始化、内存变量初始化、I/O端口初始化、中断初始化等。主循环是程序的工作循环,根据实际需要安排程序段,但一般不宜过长,建议不要超过200行,具体功能可以通过调用子程序实现,或由中断程序实现。不带操作系统的MCU程序总有一个主循环,表示程序周而复始地执行。

⑤内部直接调用子程序

若有不单独存盘的子程序,建议放在此处。这样在主程序总循环的最后一个语句就可以看到这些子程序。建议不要超过3个,每个子程序不要超过200行。若有更多的子程序请单独存盘,单独测试。

⑥外部子程序

若有程序使用的独立存盘的子程序,可在此处用“$include 子程序名”将其包含。注意,独立存盘的子程序必须与主程序在同一个目录中。

⑦中断向量

中断向量一般放在最后。复位向量的两个地址中为MCU上电后要开始执行的程序地址,即为主程序的第一个语句地址。实际程序中,为了稳定,不用的中断向量需要进行一定的处理。

(2)第一个可执行的08汇编程序

特别说明:程序中包含了独立存盘的"GP32Init.ASM"文件,是GP32系统初始化程序,它将对CONFIG1、CONFIG2进行设置,并对PLL进行编程,由外部晶振f=32.768KHz,得到内部总线时钟fBUS=2.4576MHz。

实验1 程序框架及I/O编程

实验目的:

1. 理解Freescale MCU的编程框架

2. 熟悉编程调试环境,编译、调试、下载运行第一个程序

3. 掌握I/O的基本编程方法

范例程序:

1. A01_简单IO及程序框架\ FrmMain.ASM

2. C01_简单IO及程序框架\纯C\prgframe.prj

3. C01_简单IO及程序框架\C&ASM混编\prgframe.prj

实验要求:

参考范例程序,自行设计I/O功能程序,提供硬件接线、程序描述、子程序入口出口规范说明、主程序流程框图、主要程序代码、实验体会等内容。

实验2 键盘编程

实验目的:

1. 理解键盘扫描的基本原理,掌握键盘基本接法与键值计算方法

2. 编制键盘查询、键盘中断、键值识别程序

范例程序:

1.C03_键盘中断编程\keyboard.asm

2.C03_键盘中断编程\keyboard.prj

实验要求:

参考范例程序,设计2×3键盘,定义为0-5、给出硬件接线、键值计算、键盘扫描、键盘定义等描述,对子程序要求有入口出口规范说明,自行设计主程序功能并给出流程框图、主要程序代码。

实验3 A/D转换编程

实验目的:

1. 掌握MC68HC908GP32的A/D转换编程方法

2. 学会基本的综合应用,串行和A/D转换的综合应用。

范例程序:

1.A04_AD模数转换\ AD_Main.asm

2.C04_AD模数转换\ AD.prj

3.Visual Basic6.0程序: VB_Sci目录下SCI_AD工程

接收MCU数据并显示

实验要求:

编写一程序,其功能是:以查询方式得到A/D转换的值,然后通过串行发送给PC。

参考范例程序设计一数据采集系统:MCU方采集0、1通道数据向PC发送,PC机接收后显示。

参照前面的实验,分别给出上述程序的描述。

实验4 定时器溢出中断

实验目的:

编制定时器溢出中断处理程序

范例程序:

MCU程序:

C05_1定时器溢出中断\timer1.prj

A05_1定时器溢出中断\T1Main.asm

实验要求:

设计一个定时器溢出中断方式程序,每过1秒向PC机发送一个信号,PC机以串行中断方式接收此信号后,显示MCU的已经工作的时间。

根据学习进展,分2个以上课时完成。

给出以上程序的完整表述。

实验5 定时器输入捕捉

实验目的:

编制定时器输入捕捉中断处理程序

范例程序:

MCU程序:

C05_2定时器输入捕捉\tim1ch0.prj

A05_2定时器输入捕捉\Tim1CH0.asm

实验要求:

利用定时器输入捕捉功能,将一开关信号的变化情况用图形方式显示在PC 机的屏幕上。

建议根据学习进展,分2个以上课时完成。

给出以上程序的完整表述。

实验6 PWM脉冲信号输出

实验目的:

编制定时器输出脉宽调制程序(PWM),掌握锁相环参数设置

范例程序:

MCU程序: A05_3PWM脉冲信号输出\PWMmain.asm

实验要求:

将定时通过对PWM占空比的调节实现现指示灯的渐亮的功能,当占空比为100%时再从0%逐渐增加。

给出以上程序的完整表述。

实验7 FLASH编程

实验目的:

1.了解Flash存储器工作原理。

2.掌握Flash擦除、写入的步骤。

3.学习在线编程的方法。

范例程序:

MCU程序:

A06_Flash编程\FshMain.asm

C06_Flash编程\Flash.prj

Visual Basic6.0程序: Flash_test\vb_flash 工程

实验要求:

设计一个程序,能够对MCU的某段Flash空间擦除和写入,采用在线编程,写入的数据通过串行口从PC机获得。

参照前面的实验,分别给出上述程序的描述。

实验8 串行通信编程

实验目的:

1.理解串行通信基本原理,掌握MCU串行通信基本编程方法

2.理解串行通信的查询方式和中断方式原理及其编程

范例程序:

C02_1串行通信查询方式\ H08SCI_1.prj

C02_2串行通信中断方式\ H08SCI_2.prj

A02_1串行通信查询方式\ SCIMain1.asm

A02_2串行通信中断方式\ SCIMain2.asm

以上四目录都有VB_SCI目录,该目录是对应Visual Basic6.0程序,运行在PC方,用来接收和发送数据。

实验要求:参考范例程序,使用PC方程序与单片机进行通信。了解编辑的流图。

实验9 液晶LCD显示

实验目的:

理解点阵字符LCD显示基本原理,掌握LCD显示编程方法

掌握字符型液晶控制器HD44780的接口与编程方法

进一步掌握PC机与MCU串行通信编程方法

范例程序:

MCU程序:

A07_液晶LCD显示\ LcdMain.asm

C07_液晶LCD显示\lcd.prj

Visual Basic6.0程序: vb_lcd工程,输入数据并送LCD显示

实验要求:

设计一个由PC机通过MCU控制的LCD显示程序,功能描述如下:

在PC机屏幕界面设计三个按钮,分别是“移动显示”、“静止显示”、“清LCD”。当按下“移动显示”按钮时,LED的两行分别显示“123456789012…”、“ABCD…”并以0.5秒左移一个字符; 当按下“静止显示”时,保持当前显示的字符,但不移动。当按下“清LCD”按钮时,清LCD显示。

自行设计有关串行、LCD、键盘联合编程的程序,功能自定。

给出以上两个程序的完整表述。

实验10 数码管实验

实验目的:

理解数码管显示基本原理,掌握数码管显示编程方法

掌握8段数码管的接口与编程方法

进一步掌握PC机与MCU串行通信编程方法

范例程序:

MCU程序: C08_数码管LED\LEDTest.prj

A08_数码管LED\LEDMAIN.asm

实验要求:

设计一个程序,在4连排数码管上从左至右显示3568。

给出以上两个程序的完整表述。

实验1 程序框架及I/O编程

实验目的:

①理解Freescale MCU的编程框架

②熟悉编程调试环境,编译、调试、下载运行第一个程序

③掌握I/O的基本编程方法

范例程序:

① A01_简单IO及程序框架\ FrmMain.ASM

实验要求:

参考范例程序,自行设计I/O功能程序,提供硬件接线、程序描述、子程序入口出口规范说明、主程序流程框图、主要程序代码、实验体会等内容。

参考程序:

*------------------------------------------------------*

*文件名:FrmMain.ASM *

*硬件连接:PTA.1接指示灯 *

*程序描述:指示灯PTA.1闪烁 *

*目的:第一个freescale(Motorola) HC08系列MCU程序框架*

*说明:提供Motorola MCU的编程框架,供教学入门使用 *

*注意:如果延时不够长的话,会发觉灯不会闪烁,而是一 *

* 直亮,这是由于人的视觉引起的。 *

*--------《嵌入式应用技术基础教程》教学实例------------*

*[头文件]

$include "GP32ASM.H" ;包含GP32的头文件

*[两个起始地址名]

RAMstartAddr equ $0040 ;RAM的起始地址(因芯片而不同)

FlashStartAddr equ $8000 ;程序开始地址(因芯片而不同)

*[指示灯所接引脚定义]

Light_P equ PTA ;灯(Light)接在PTA口

Light_D equ DDRA ;相应的方向寄存器

Light_Pin equ 1 ;所在的引脚

*[内存变量]

ORG RAMstartAddr ;RAM的起始地址

I1 RMB 1 ;变量I1的声明(字节型变量)

*=======================================================

*[主程序]

ORG FlashStartAddr ;程序起始地址

MainInit: ;复位后程序从此开始执行

;[系统初始化]

SEI ;禁止所有中断

LDHX #$023F ;堆栈初始化为RAM最高端

TXS

JSR GP32Init ;系统初始化,初学时跳过此处

;[I/O初始化]

BSET Light_Pin,Light_D ;令指示灯引脚为输出

BSET Light_Pin,Light_P ;初始时,指示灯"暗"

;[程序总循环入口]

MainLoop:

;[指示灯(Light)“亮”]

BCLR Light_Pin,Light_P

;[延时] 若要改变闪烁的快慢,可以改变循环次数

MOV #!250,I1 ;循环次数

Main1:

JSR Delay1000 ;调用延时子程序

DBNZ I1,Main1

;[指示灯(Light)"暗"]

BSET Light_Pin,Light_P

;[延时]

MOV #!250,I1 ;循环次数

Main2:

JSR Delay1000 ;调用延时子程序

DBNZ I1,Main2

;[转总循环入口处]

JMP MainLoop

*[内部直接调用的子程序存放处]

*Delay1000:延时1000个时钟周期--------------------------* *功能:用程序方法延时,延时长度为200*5=1000个时钟周期 * *入口:无 * *出口: 无 * *------------------------------------------------------* Delay1000:

PSHA ;A进栈(保护寄存器A)

;延时200*5=1000个时钟周期

LDA #!200 ;循环次数

Delay1000_1:

NOP ;1个时钟周期

NOP ;1个时钟周期

DBNZA Delay1000_1 ;3个时钟周期

PULA ;A出栈(恢复寄存器A) RTS

*[外部子程序存放处]

$include "GP32Init.ASM"

*[中断向量]

ORG $FFFE ;复位向量

DW MainInit

实验2 键盘编程

实验目的:

①理解键盘扫描的基本原理,掌握键盘基本接法与键值计算方法

②编制键盘查询、键盘中断、键值识别程序

范例程序:

①C03_键盘中断编程\keyboard.asm

实验要求:

参考范例程序,设计2×3键盘,定义为0-5、给出硬件接线、键值计算、键盘扫描、键盘定义等描述,对子程序要求有入口出口规范说明,自行设计主程序功能并给出流程框图、主要程序代码。

参考程序:

*-------------------键盘实验---------------------------*

*文件名:KeyMain.asm *

*硬件连接:PTA7-4接键盘4根列线,PTA3-0接键盘4根行线 *

*程序描述:按下键盘按键,串口发送对应的键值 *

*目的:键盘扫描,键盘中断,键值识别,键盘编码 *

*注意:如果键盘插在实验板的上排插孔,无须连线,若插 *

* 在下排插孔,需手工接线 *

*---------《嵌入式应用技术基础教程》教学实例-----------*

*[头文件]

$include "GP32ASM.H"

*[两个起始地址]

RAMstartAddr equ $0040 ;RAM的起始地址

FlashStartAddr equ $8000 ;程序开始地址

*=======================================================

*[主程序]

org FlashStartAddr ;程序起始地址

MainInit: ;复位后程序从此开始执行

;[系统初始化]

SEI ;关中断

LDHX #$023F

TXS

JSR GP32Init ;调系统初始化子程序GP32Init

JSR SCIInit ;调串行口初始化子程序SCIInit

JSR KB_Init ;调键盘初始化子程序

BCLR 1,INTKBSCR ;开放键盘中断(IMASK=0)

CLI ;开中断

;[程序总循环入口,无中断时空操作]

MainLoop:

NOP

NOP

BRA MainLoop

*=========以下为子程序存放处============================ *KB_Int:键盘中断处理程序-------------------------------* *功能:键盘中断程序,把键定义值从串口发送出去 * *调用子程序:(1)扫描法读取键值子程序(KB_Scan) * * (2)键值转为定义值子程序(KB_Def) * *------------------------------------------------------* KB_Int:

SEI ;关总中断

PSHH ;保护H

BSET 1,INTKBSCR ;禁止键盘中断

JSR KB_Scan ;扫描键盘,读取键值->A

JSR SCISend1 ;发送键值

JSR KB_Def ;转成键定义值->A

JSR SCISend1 ;发送键定义值

JSR KB_Init

BCLR 1,INTKBSCR ;开放键盘中断(IMASKK=0)

PULH ;恢复H

CLI ;开总中断

RTI

*[外部子程序存放处]

$include "GP32init.asm"

$include "SCIInit.asm"

$include "H08SCI.asm"

$include "KBsub.asm"

*[中断向量]

ORG $FFE0 ;键盘中断矢量

DW KB_Int

ORG $FFFE ;复位矢量

DW MainInit

实验3 A/D转换编程

实验目的:

①掌握MC68HC908GP32的A/D转换编程方法

②学会基本的综合应用,串行和A/D转换的综合应用。

范例程序:

①A04_AD模数转换\ AD_Main.asm

②Visual Basic6.0程序: VB_Sci目录下SCI_AD工程

接收MCU数据并显示

实验要求:

①编写一程序,其功能是:以查询方式得到A/D转换的值,然后通过串行发送给PC。

②参考范例程序设计一数据采集系统:MCU方采集0、1通道数据向PC发送,PC机接收后显示。

参照前面的实验,分别给出上述程序的描述。

参考程序:

------------------------------------------------------*

*文件名:AD_Main.ASM *

*硬件连接:PTB0/AD0 接模拟量输入端 *

*程序描述:获取1路A/D转换结果,并滤波,通过串口发送出去 *

*目的:掌握AD转换的基本编程方法 *

*注意:用SD-1实验板测试时,把液晶拔出,否则可能影响结果*

*----------《嵌入式应用技术基础教程》教学实例----------*

*[头文件]

$include "GP32ASM.H"

*======================================================*

*[主程序]

org $8000 ;程序起始地址

MainInit: ;复位后程序从此开始执行

;[系统初始化]

SEI

LDHX #$023F ;堆栈初始化

TXS

JSR GP32Init ;调系统初始化子程序GP32Init

JSR SCIInit ;调串行口初始化子程序SCIInit

;[A/D初始化,用内部总线时钟,2分频]

LDA #%00110000

STA ADCLK

MainLoop:

LDA #$00 ;采集通道0,并求20次的平均值

LDX #!20

JSR adave ;调A/D转换均值滤波子程序 JSR SCISend1 ;串口发送转换结果

BRA MainLoop

*[外部子程序存放处,这些子程序都在当前目录中] $INCLUDE "ADsub.asm"

$INCLUDE "H08SCI.asm"

$INCLUDE "GP32init.asm"

$INCLUDE "SCIInit.asm"

*[中断向量]

ORG $FFFE ;复位矢量

DW MainInit

MSP430单片机实验报告v3.0

MSP430单片机课程设计 一.设计要求 数字温度计 (1)用数码管(或LCD)显示温度和提示信息; (2)通过内部温度传感器芯片测量环境温度; (3)有手动测量(按测量键单次测量)和自动测量(实时测量)两种工作模式; (4)通过按键设置工作模式和自动测量的采样时间(1秒~1小时); (5)具备温度报警功能,温度过高或过低报警。 二.系统组成 系统由G2Launch Pad及其拓展板构成,单片机为MSP430G2553。 I2的通信方式对IO进行拓展,芯片为TCA6416A; 使用C 使用HT1621控制LCD; 三.系统流程 拓展的四个按键key1、key2、key3、key4分别对应单次测量、定时测量、定时时间的增、减。定时时间分别为1s,5s,15s,30s,60s。在自动测量模式下,当温度超过设定温度上限

即报警,报警时在LCD屏幕显示ERROR同时LED2闪烁,在5s后显示0℃。此时可重新开始手动或自动测量温度。 系统示意图: 四.演示 a)手动测量温度 b)自动测量温度 c)报警

显示ERROR同时LED闪烁d)设置时间界面 五.代码部分 #include "MSP430G2553.h" #include "TCA6416A.h" #include "LCD_128.h" #include "HT1621.h" #include "DAC8411.h" #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) static int t=0; long temp; long IntDeg; void ADC10_ISR(void); void ADC10_init(void); void LCD_Init(); void LCD_Display(); void GPIO_init(); void I2C_IODect(); void Error_Display(); void WDT_Ontime(void); void LCD_Init_AUTO(); void LCD1S_Display();

单片机实验指导书

《单片机原理与应用》 实验指导书 注意: 1、做实验前必须预习 2、带教材和实验指导书 理工大学 自动化学院自动化系

实验仪的使用 本实例是仿真INTEL的8031单片机,来循环点亮P1口的发光二极管(低电平有效)。程序是用汇编语言来编写。下面介绍相应的操作步骤: 1、运行桌面“星研集成软件”,画面如下: 2、建立源文件 执行 [主菜单?文件?新建],(或者点击图标)打开窗口。 选择存放源文件的目录,输入文件名,注意:一定要输入文件名后缀。对源文件编译、连接、生成代码文件时,系统会根据不同的扩展名启动相应的编译软件。比如:.ASM文件,使用A51来对它编译。本实 例文件名为xunhuan.asm 。窗口如下: 按“确定”即可。然后即出现文件编辑窗口: 输入源程序,参照实验一源程序。 .专业DOC.

这样一个源文件就建立好了。 3.编译、连接文件 首先选择一个源文件,然后可以编译、连接文件了。对文件编译,如果没有错误,再与库文件连接,生成代码文件(DOB、HEX文件)。编译、连接文件的方法有如下二种:(1)使用[ 主菜单?项目?编译、连接 ]或[主菜单?项目?重新编译、连接]”。(2)点击图标或来“编译、连接”或“重新编译连接”。编译、连接过程中产生的信息显示在信息窗的“建立”视中。编译没有错误的信息如下: 若有错误则出现如下信息框: 有错误、警告信息,用鼠标左键双击错误、警告信息或将光标移到错误、警告信息上,回车,系统自动打开对应的出错文件,并定位于出错行上。 这时用户可以作相应的修改,直到编译、连接文件通过。 4.调试 编译、连接正确后,可以开始调试程序。进入调试状态方法有: a)执行[ 主菜单?运行?进入调试状态] b)点击工具条的进入后的窗口如下:

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验指导书

实验一KEIL 51软件实验 实验目的: 1、掌握KEIL集成开发环境的使用 2、掌握算术运算程序 实验设备:计算机、KEIL51软件 实验内容: 编程实现把片人RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。在KEIL51编译、连接、仿真调试。 实验步骤: 一、运行KEIL51软件,出现图1所示KEIL 51主界面。 图1 KEIL 51主界面 首先用Project菜单下的New Project命令建立项目文件,过程如下。 (1) 选择Project菜单下的New Project命令,弹出如图2所示的Create new Project对话框。 图2 Create New Project对话框 (2) 在Create New Project对话框中选择新建项目文件的位置(最好一个项目建立一个文件夹如E:\project), 输入新建项目文件的名称,例如,项目文件名为example,单击【保存】按钮将弹出如图3所示的Select Device for Target ‘Target 1’对话框,用户可以根据使用情况选择单片机型号。Keil uVision2 IDE几乎支

持所有的51核心的单片机,并以列表的形式给出。选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。 图3 Select Device for Target ‘Target 1’对话框 (3) 这里选择atmel公司的AT89c51。单击【确定】按钮,这时弹出如图4所示的Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框,C语言开发选择【是】,汇编语言开发选择【否】。 单击后,项目文件就创建好了。项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的内容。 这时只有一个框架,紧接着需向项目文件中添加程序文件内容。 图4 Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框 二、给项目添加程序文件 当项目文件建立好后,就可以给项目文件加入程序文件了,Keil uVision2支持C语言程序,也支持汇编语言程序。这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。 (1) 选择文件菜单上的new命令,出现新建文本窗口,如图5所示。

南理工 王宏波 MSP430F6638单片机实验报告

MSP430单片机应用技术 实验报告 学号:XXXXXXXX

实验1 一、实验题目:UCS实验 二、实验目的 设置DCO FLL reference =ACLK=LFXT1 = 32768Hz, MCLK = SMCLK = 8MHz,输出ACLK、SMCLK,用示波器观察并拍照。 UCS,MCLK、 SMCLK 8MHz 的 1 2 六、实验结果 实验2 一、实验题目:FLL+应用实验 二、实验目的

检测P1.4 输入,遇上升沿进端口中断,在中断服务程序内翻转P4.1 状态。 三、实验仪器和设备 计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5 四、实验步骤 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; WDT 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; 3、新建工作空间workspace; 4、新建工程project与源文件main.C; 5、编写程序; 6、编译、调试、下载程序到单片机;

7、观察、分析、保存运行结果。 五、实验程序 实验4 一、实验题目:WDT_A实验 二、实验目的 定时模式 1 2 六、实验结果 实验5一、实验题目:Timer_A实验

二、实验目的 比较模式-Timer_A0,两路PWM 输出,增减计数模式,时钟源SMCLK,输出模式7 TACLK = SMCLK = default DCOCLKDIV。PWM周期CCR0 = 512-1,P1.6 输出PWM占空比CCR1 = 37.5%,P1.7输出PWM占空比CCR1 =12.5%。 要求: (1)用示波器观察两路PWM 输出的波形并拍照,测量周期、正脉宽等参数,与理论值进行对比分析。 (2 (3 1 2 实验6 一、实验题目:ADC12实验 二、实验目的 ADC12 单次采样A0 端口,根据转换结果控制LED 状态。

单片机实验指导书

单片机实验指导书 适用专业:计算机控制、网络、物联网等 学时:12 编写人:孔庆臣 2016-5-12

实验一 IO口输入输出实验 1. 实验内容 (1) P2口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 (2) P1口做输入口,接八个扭子开关,P2口接八只发光二极管,编写程序读取开关状态,将此状态在发光二极管上显示出来。 2. 实验目的 学习keil仿真软件的使用方法 学习IO口的使用方法。 学习延时子程序的编写和使用。 stc-isp软件的使用 3.有关说明 P1口为准双向口,P1的每一位都能独立地定义为输入或输出线,作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。单片机IO口在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。 可以用第二个实验做一下实验。先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1作输入口,会有什么结果。 再来看一下延时程序的实现。通常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。 本实验系统晶振为11.0592MHZ,则一个时钟周期为0.0904us。现要写一个延时0.1s的程序,可大致写出如下: void Delay100ms() //@11.0592MHz { unsigned char i, j, k; i = 5; j = 52; k = 195; do { do { while (--k); } while (--j); } while (--i); } 5.实验电路设计 (1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。 (2)画出本次实验独立的原理图 5、实验要求 (1)完成实验电路设计 (2)完成实验程序设计 (3)实现要求的实验结果

430单片机点亮LED实验报告

430单片机点亮LED实验报告 一.安装实验软件IAR 二.编写点亮LED灯程序 1.使P1.0口LED灯会不停的闪烁着,程序 #include typedef unsigned int uint; typedef unsigned char uchar; /*延时函数*/ void Delay_Ms(uint x) { uint i; while(x--)for(i=0;i<250;i++); } /*主函数*/ int main( void ) { WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset P2DIR|=BIT0;//定义P1口为输出 while(1)//死循环 { P2OUT^=BIT0;//P1.0口输出取反

Delay_Ms(600);//稍作延时 } } 下载进去看到了P1.0口LED灯会不停的闪烁着。 2.实验目的让两盏灯交换闪烁程序 #include"msp430g2553.h" void main(void) { void Blink_LED(); WDTCTL=WDTPW+WDTHOLD; //关闭看门狗 P1DIR=BIT6; P2DIR=BIT0; while(1) { Blink_LED(); } } void Blink_LED() { _delay_cycles(1000000); //控制第二个LED P1OUT^=BIT6; _delay_cycles(1000000); //控制第一个LED P2OUT^=BIT0;

单片机实验指导书

实验一8051简单编程与调试实验目的 通过简单小程序的输入和调试,熟悉并掌握Keil 的使用。学会Proteus与Keil的整合调试。 实验基本要求 建立三个项目,分别输入存储块清零、二进制BCD码及二进制ASCII码转换的汇编源程序,并进行仿真调试。画出实验程序的流程框图。 实验步骤 采用Keil Cx51 开发8051单片机应用程序一般需要经过下面几个步骤: 1、在 Vision2集成开发环境中创建一个新项目(Project),并为该项目选定合适的单片机CPU器件。 在菜单栏中选择“Project”→“New Project”,弹出“Create New Project”对话框,选择目标路径,在“文件名”栏中输入项目名后,单击“保存(S)”按钮,弹出“Selecte Device for Target”对话窗口。在此对话窗口的“Data base”栏中,单击“Atmel”前面的“+”号,或者直接双击“Atmel”,在其子类中选择“AT89C51”,确定CPU类型。如图所示。 点击“确定”按钮后,弹出如下的对话框

如果是进行汇编语言编程选择“否”。 2、利用μVision2的文件编辑器编写C语言(或汇编语言)源程序文件,并将文件添加到项目中去。一个项目可以包含多个文件,除源程序文件外还可以有库文件或文本说明文件。 在μVision2的菜单栏中选择“File”→“New”命令,新建文档,然后在菜单栏中选择“File”→“Save”命令,保存此文档,这时会弹出“Save As”对话窗口,在“文件名(N)”一栏中,为此文本命名,注意要填写扩展名“.asm”。单击“保存(S)”按钮,这样在编写汇编代码时,Keil会自动识别汇编语言的关键字,并以不同的颜色显示,以减少输入代码时出现的语法错误。程序编写完后,再次保存。 在Keil中“Project Workspace”子窗口中,单击“Target 1”前面的“+”号,展开此目录。在“Source Group 1”文件夹上单击鼠标右键,在右键菜单中选择“Add File to ‘Group Source 1’”,弹出“Add File to Group”对话窗口,在此对话窗口的“文件类型”栏中,选择“Asm Source File”,并找到刚才编写的.asm文件,双击此文件,将其添加到Source Group 中,此时“Project Workspace”子窗口如图所示。

MSP430单片机实验报告

MSP430单片机实验报告 专业: 姓名: 学号:

MSP430单片机实验报告 设计目标:使8位数码管显示“5201314.”,深入了解串行数据接口。 实现过程:主要分为主函数、驱动8位数码管函数、驱动1位数码管函数及延时函数。 延时函数:采用for循环。 驱动1位数码管子函数:设置74HC164的时钟传输和数传输,声明变量,使数据表中每一个要表示的字符的每一位都与shift做与运算从而进行传输,上升沿将传输数据传送出去。驱动1位数码管子函数的流程图如图1所示。 图1 驱动1位数码管子函数流程图 驱动8位数码管子函数:调用8次驱动1位数码管子函数。驱动8位数码管子函数流程图如图2所示。 图2 驱动8位数码管流程图

while 图3 主函数流程图 实验结果:供电后,数码管显示“5201314.”字样。 源程序: /************* 程序名称:5201314.*************/ /***程序功能:通过模拟同步串口控制8个共阳数码管***/ /*******P5.1 数据管脚,P5.3 同步时钟管脚*******/ #include // 头文件 void delay(void); // 声明延迟函数void seg7_1 (unsigned char seg7_data); // 声明驱动1 位数码管函数void seg7_8 ( unsigned char seg7_data7, unsigned char seg7_data6, unsigned char seg7_data5, unsigned char seg7_data4, unsigned char seg7_data3, unsigned char seg7_data2,

单片机实验指导书

单片机实验 实 验 指 导 书 2017年2月

单片机实验报告 (自动化XX级) 实验名称 学生 联系方式 学号 院系工学院电气与信息工程系专业自动化 指导教师 填写日期

实验一数据传送 一、实验目的 1.进一步熟悉仿真器的使用方法。 2.练习设计简单的程序。 3.掌握8051片RAM和片外RAM的数据传送方法,从而了解这两部分存贮器的特点。 二、实验容 将8051部RAM 40H~4FH置初值00H~0FH,然后将40H~4FH容传送到外部RAM的4800H~480FH,再将4800H~480FH传回部RAM的50H~5FH。设置断点B1、B2、B3每运行到断点时检查相应的CPU现场和存贮单元的容。 三、实验准备 1、认真阅读本实验指导。 2、读懂下面的程序: #include #include char data *p40 ,*p50 ; char xdata *p4800; char i, j, k; void main( ) { p40=0x40; p50=0x50; p4800=0x4800; for(i=0;i<16;i++) { *p40=i; p40=p40+1; } //B1 p40=0x40; for(j=0;j<16;j++) { *p4800=*p40; p40=p40+1; p4800=p4800+1; } // B2 p4800=0x4800; for(k=0;k<16;k++) { *p50=*p4800; p50=p50+1;

p4800=p4800+1; } } //B3 3、画出如下要测的数据表格: 四、实验步骤 1、向机器输入程序。 2、运行程序至第一个断点B1,检查40H~0FH单元容及指针p40的容。 3、运行程序至第二个断点B2,检查4800H~480FH单元容及指针p40,p4800的容。 4、运行程序至第三个断点B3,检查50H~5FH单元容及累加器及指针p50的容。 五、实验报告要求 1、写出C语言源程序和对应的汇编语言指令及注解的程序清单。 2、将测得的数据填入表格,并和理论分析的结果相比较。 3、说明8031CPU对部存贮器和外部扩展RAM存贮器各有哪些寻址方式? 4、如果要读外部程序存储器0x4800中的容,该如何访问? 5.实验心得。(必须)

单片机实训指导书

实训项目一让单片机动起来1、实训目的及要求: 1)掌握单片机开发板的使用方法(驱动识别,程序下载) 2)掌握单片机程序开发软件KEIL的使用 3)掌握单片机程序烧录软件STC-ISP下载软件的使用 2、实训内容 1)根据实训报告内容编写单片机程序 2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中 3)观察实验现象并记录 4)完成实训报告内容 3、实训准备 硬件:单片机开发板、电脑、杜邦线 软件:keil uvision4 、STC-ISP 4、实训过程 1)流程图

2)实训程序一: #include "reg52.h" sbit LED=P1^0; void main() { LED=0; while(1); } 实训程序二: #include "reg52.h" #define LED P1; void main() { LED=0xaa; while(1); } 3)实训步骤 ①打开KEIL软件编写LED控制程序。 ②程序调试无误后,使用KEIL生产HEX文件。 ③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

3)实验现象记录 实训程序一:。实训程序二:。 4)实训报告要求 ①将实训程序中的注释补充完整,了解每条语句作用。 ②完成如下评分表

实训项目二LED的闪烁1、实训目的及要求: 1)掌握单片机控制LED点亮和熄灭的方法。 2)了解单片机延时程序的原理及设计。 3)了解单片机中常用的变量类型及其定义方法。 2、实训内容 1)根据实训报告内容编写单片机程序 2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录 4)完成实训报告内容 3、实训准备 硬件:单片机开发板、电脑、杜邦线 软件:keil uvision4 、STC-ISP 4、实训过程 1)流程图

MSP430 按键程序范例(附原理图)

#i nclude void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.4 P1.5 P1.6 P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7; //先输出低电平 P1OUT = 0x00; // 将中断寄存器清零 P1IE = 0; P1IES = 0; P1IFG = 0; //打开管脚的中断功能 //对应的管脚由高到低电平跳变使相应的标志置位 P1IE |= BIT0; P1IES |= BIT0; P1IE |= BIT1; P1IES |= BIT1; P1IE |= BIT2; P1IES |= BIT2; P1IE |= BIT3; P1IES |= BIT3; _EINT();//打开中断 return; } void Delay(void) { int i; for(i = 100;i--;i > 0) ;//延时一点时间 } int KeyProcess(void) { int nP10,nP11,nP12,nP13; int nRes = 0;

//P1.4输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 13; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 14; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 15; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 16; //P1.5输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 9; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 10; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 11; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 12; //P1.6输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 5; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 6; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 7; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 8; //P1.7输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 1; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 2; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 3; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 4; P1OUT = 0x00;//恢复以前值。

单片机实验指导书——带答案

《单片机原理及应用》 实验指导书 姓名: 学号: 专业班级: 所在学院:成人教育学院 2012年5月日

单片机实验指导书 目录 实验一系统认识实验 (3) 实验二程序调试 (6) 实验三外部中断实验 (6) 实验四串口实验 (8)

实验一系统认识实验 一、实验目的 1.掌握SICElab-G2200实验/仿真系统的结构与使用方法; 2.熟悉单片机系统开发软件WA VE6000。 二、实验设备 1.G2200/2100 实验平台 1 台 2.仿真器/ 仿真板 1 台 3.连线若干根 4.计算机 1 台 三、实验内容 P1端口接发光二极管,加1点亮。 四、连线方案: 五、实验步骤 1.连接Lab51CPU板。(已由实验师连好) 2.仿真器与实验平台的连接 将Lab51板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。(已由实验师连好) 3.仿真器与计算机的连接 用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。 特别注意:在仿真器与计算机连接串口电缆时,两台机器必须都断电,否则易损坏计算机和仿真器。 4.实验连线 按连线方案,用随机配带的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接触。拆线时,应先回转一下,不要硬拨,以免损坏线路板。不管是拆线还是插线,都应 在断电的情况下进行。实验中“连线方案”的粗线即为需用户动手接连的线。

5.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。 6.在计算机上打开“WA VE6000集成调试环境”,界面如下图所示: 7.建立新程序(如果程序已编好,直接跳到第9步) 选择菜单[文件 | 新建文件]功能。 出现一个文件名为NONAME1的源程序窗口,在此窗口中输入以下程序 ORG 0 MOV P1,#0 ;熄灭发光二极管 LOOP: INC P1 CALL Delay SJMP LOOP Delay: MOV R2,#3 ;延时程序 MOV R1,#0 MOV R0,#0 DLP: DJNZ R0,DLP DJNZ R1,DLP DJNZ R2,DLP RET END 8.保存程序 选择菜单[文件 | 保存文件]或[文件 | 另存为 ]功能。 9.建立新的项目 选择菜单[文件 | 新建项目]功能。 新建项目会自动分三步走。 (1)加入模块文件。在加入模块文件的对话框中选择刚才保存的文件MY1.ASM,按打开键。如果你是多模块项目,可以同时选择多个文件再打开。 (2)加入包含文件。在加入包含文件对话框中,选择所要加入的包含文件(可多选)。如果没有包含文件,按取消键。 (3)保存项目。在保存项目对话框中输入项目名称。MY1无须加后缀。软件会自动将后缀设成“.PRJ”。按保存键将项目存在与你的源程序相同的文件夹下。 10.设置项目 11.编译程序 选择菜单[项目 | 编译]功能或按编译快捷图标或按F9键,编译项目。 在编译过程中,如果有错可以在信息窗口中显示出来。双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,就可以执行、调试程序了。 12.执行、调试程序 有四种方法执行程序:全速执行、程序单步跟踪、执行到光标处和设置断点。 (1)全速执行 (2)程序单步跟踪 选择[执行 | 跟踪]功能或按跟踪快捷图标或按F7键进行单步跟踪调试程序。 (3)执行到光标处 (4)设置断点 (5)观察各变量值的方法

MSP430单片机定时器实验报告

实验四定时器实验 实验目的: MPS430F5529片内集成的定时器A的使用,学习计数器的补捕获比较模块的使用。实验内容: 定时器采用辅助时钟ACLK作为计数脉冲,fACLK=32768Hz,实现以下功能: 1.定时器TA0延时1s,点亮或熄灭LED6,即灯亮1s灭1s,如此循环,采用中断服务程序实现。 2.定时器TA0延时1s,点亮或熄灭LED4,采用捕获比较器CCR0的比较模式,设定输出方式,输出方波,不用中断服务程序 3.采用捕获比较器CCR1的比较模式LED5,设定输出方式,输出PWM波形,使LED 亮2s,灭1s。 4.用定时器实现30s倒计时,在液晶模块上显示,每过一秒显示数字变化一次。 5.使用TA1的捕获比较器CCR0捕获按键的间隔时间,在液晶模块上显示。 程序代码: 程序1: #include void main() {WDTCTL = WDTPW + WDTHOLD; //关看门狗 P1DIR |= BIT3; //设置P1.0口方向为输出。 TA0CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1, //CCR0捕获/比较功能中断为允许。 TA0CCR0 = 32767; //捕获/比较控制寄存器CCR0初值为32767 TA0CTL = TASSEL_1 + MC_1+TACLR; //设置定时器A控制寄存器TACTL, //使时钟源选择为SMCLK辅助时钟。 //进入低功耗模式LPM0和开总中断 _BIS_SR(LPM0_bits +GIE); } //定时器A 中断服务程序区 #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) {

单片机原理及应用_第十讲_MSP430单片机的ADC实验报告

单片机原理及应用 第十讲 MSP430单片机的ADC 实验报告 报告人:学号:同组人员: 实验内容 实验1 AD采集输入电压并比较 实验2 AD内部温度采集实验 实验3 验收实验:温度采集与显示 把实验2中的实测温度值以摄氏度数值显示在段码LCD上。 实验步骤 步骤: (1) 将PC 和板载仿真器通过USB 线相连; (2) 打开CCS 集成开发工具,选择样例工程或自己新建一个工程,修改代码; (3) 选择对该工程进行编译链接,生成.out 文件。然后选择,将程序下载到实验板中。程序下载完毕之后,可以选择全速运行程序,也可以选择

单步调试程序,选择F3 查看具体函数。也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。再按下实验板的复位键,运 行程序。(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议 上电运行程序)。 关键代码: 实验1 AD采集输入电压并比较 #include int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on ADC12CTL1 = ADC12SHP; // Use sampling timer ADC12IE = 0x01; // Enable interrupt ADC12CTL0 |= ADC12ENC; P6SEL |= 0x01; // P6.0 ADC option select P4DIR |= BIT1; // P4.1 output while (1) { ADC12CTL0 |= ADC12SC; // Start sampling/conversion __bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit __no_operation(); // For debugger } } #pragma vector = ADC12_VECTOR __interrupt void ADC12_ISR(void) { switch(__even_in_range(ADC12IV,34)) { case 0: break; // Vector 0: No interrupt case 2: break; // Vector 2: ADC overflow case 4: break; // Vector 4: ADC timing overflow

单片机实验指导书终稿

实验一清零、移数、判断 一、实验目的 1、掌握汇编语言程序设计和调试方法。 2、掌握RAM存储器读写及存储块操作方法 3、熟悉分支结构程序的设计。 二、实验内容 将片内30H~40H及片外0010H~0100H清零,然后将片内41H~47H的内容移到片外0041H~0047H,判断: 若(0041H)<15,则求其平方存到0050H中,并将位00H置1。 (0041H)=15,则加15存到0050H中,并将位01H置1。 (0041H)>15, 则减15存到0050H中,并将位02H置1。 三、实验说明 通过本实验,学生可以了解单片机读写存储器的读写方法,同时也可以了解单片机编程,调试方法。 四、实验框图 片内外RAM清零流程图移数流程图

判断流程图 五、思考题 1、如果平方数超过255,怎样将数放到片内RAM 30H和31H单元内,写出指令。 2、位的表示方法有哪些,举例说明?将01H位清零的方法有几种,写出指令。

实验二排序、加法 一、实验目的 1、进一步掌握汇编语言程序设计和调试方法。 2、掌握数据排序的算法及加法运算。 二、实验内容 1、有两个长度为10个字节的无符号数分别放在片内30H和40H为首的存储单元中 (低字节),求其和(带进位位),放在50H为首的单元中。 2、将50H为首单元中的数按升序排列放在60H为首的单元中。 三、实验说明 通过本实验,学生可以了解单片机排序的算法,本程序采用“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。 四、实验框图 加法运算流程图排序流程图 五、思考题 1、-125与-9相加,PSW中OV、AC、CY的值是多少?各表示什么含义? 2、两个压缩BCD码59和22相加,结果放到片内RAM 30H单元中,写出程序。

MSP430单片机AD转换实验

A/D转换实验 一、转换原理 MSP430F149的A/D转换器原理请参考相关书籍。 实验板上与AD相关的硬件电路 : 编程工作实际就就是对以下寄存器的操作: 寄存器类型寄存器缩写寄存器的含义 转换控制寄存器ADC12CTL0 转换控制寄存器0 ADC12CTL1 转换控制寄存器1 中断控制寄存器ADC12IFG 中断标志寄存器ADC12IE 中断使能寄存器ADC12IV 中断向量寄存器 存储及其 控制寄存器ADC12MCTL0 ~ ADC12MCTL15 存储控制寄存器0~15 ADC12MEM0 ~ ADC12MEM15 存储寄存器0~15 设计主程序与中断服务程序。 二、转换程序 1、程序1:转换结果发送到PC 主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。

“main、c”主程序与中断程序: /********************************************************* 程序功能:将ADC对P6、0端口电压的转换结果按转换数据与对应的模拟电压的形式通过串口发送到PC机屏幕上显示 ----------------------------------------------------------- 通信格式:N、8、1, 9600 ----------------------------------------------------------- 测试说明:打开串口调试精灵,正确设置通信格式,观察接收数据 **********************************************************/ #include #include "allfunc、h" #include "UART0_Func、c" #include "ADC_Func、c" #define Num_of_Results 32 uint results[Num_of_Results]; //保存ADC转换结果的数组 uint average; uchar tcnt = 0; /***********************主函数***********************/ void main( void ) { uchar i; uchar buffer[5]; WDTCTL = WDTPW + WDTHOLD; //关狗 /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 P6DIR|=BIT6;P6OUT&=~BIT6; //关闭数码管显示 InitUART(); Init_ADC(); _EINT(); buffer[4] = '\0';

单片机实验分析指导书

\\ 《单片机原理与应用》 实验指导书 注意: 1、做实验前必须预习 2、带教材和实验指导书 哈尔滨理工大学 自动化学院自动化系

实验仪的使用 本实例是仿真INTEL的8031单片机,来循环点亮P1口的发光二极管(低电平有效)。程序是用汇编语言来编写。下面介绍相应的操作步骤: 1、运行桌面“星研集成软件”,画面如下: 2、建立源文件 执行[主菜单?文件?新建],(或者点击图标)打开窗口。 选择存放源文件的目录,输入文件名,注意:一定要输入文件名后缀。对源文件编译、连接、生成代码文件时,系统会根据不同的扩展名启动相应的编译软件。比如:.ASM文件,使用A51来对它编译。本 实例文件名为xunhuan.asm 。窗口如下: 按“确定”即可。然后即出现文件编辑窗口: 输入源程序,参照实验一源程序。 1

这样一个源文件就建立好了。 3.编译、连接文件 首先选择一个源文件,然后可以编译、连接文件了。对文件编译,如果没有错误,再与库文件连接,生成代码文件(DOB、HEX文件)。编译、连接文件的方法有如下二种:(1)使用[ 主菜单?项目?编译、连接]或[主菜单?项目?重新编译、连接]”。(2)点击图标或来“编译、连接”或“重新编译连接”。编译、连接过程中产生的信息显示在信息窗的“建立”视中。编译没有错误的信息如下: 若有错误则出现如下信息框: 有错误、警告信息,用鼠标左键双击错误、警告信息或将光标移到错误、警告信息上,回车,系统自动打开对应的出错文件,并定位于出错行上。 这时用户可以作相应的修改,直到编译、连接文件通过。 4.调试 编译、连接正确后,可以开始调试程序。进入调试状态方法有: a)执行[ 主菜单?运行?进入调试状态] b)点击工具条的进入后的窗口如下: 2

MSP430单片机实验指导书

试验一 一、实验目的 进一步熟悉IAR for MSP430编程软件和PROTEUS仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握MSP430单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。掌握PROTEUS仿真软件仿真MSP430单片机过程中的注意事项。 二、实验内容 1、运用PROTEUS仿真软件绘制LED流水灯电路; 2、运用IAR for MSP430编程软件编辑led流水灯程序,并且生成.hex 或.d90文件,并且将生成的文件加载到单片机中,程序使用P1或其它端口来演示跑马灯,输出低电平驱动。 三、实验器材 电脑一台 四、实验原理及介绍 LED流水灯实际上是一个带有发光二极管的单片机最小系统,即由led灯、电阻、电容器、电源等电路和必要的软件组成的单个的单片机;如果要让接在P1或其它端口的LED灯亮起来,那么只需要将P1或其它端口的电平变为低电平就可以了。同理,将该端口电平变为高电平,LED灯就会熄灭。 五、程序流程图 开始 端口初始化 LED顺序点亮 结束 六、实验步骤 1、运用PROTEUS仿真软件绘制电路图; 2、运用IAR for MSP430编写流水灯程序,并且生成‘’.hex’’或“.d90”文件

3、将‘’.hex’’或“.d90”文件软件加载到PROTEUS仿真软件中; 4、换一种流水灯的亮灭顺序,改变延时时间的大小,多次实验,灵活使用 七、参考程序 #include "msp430f249.h" #define uint unsigned int /******************** 主函数 **************************/ void main(void) { Uint I; WDTCTL = WDTPW + WDTHOLD; P1DIR = ox0ff; while(1) { PIOUT = 0x00; For(I = 0;I < 65565;I ++); PIOUT = 0x0ff; For(I = 0;I < 65565;I ++); } } 八、心得体会(二页以上)

相关文档