实验一 PSOC单片机认识及基本IO编程设计实验
一、 实验目的:
1、学习 PSOC单片机的工作原理。 2、学习基本I/O编程设计。 二、实验原理:
(一)PSOC基础
PSoC=Programmable System on Chip 可编程片上系统 功能:
可配置的模拟模块:ADCs、DACs、滤波器、放大器、比较器、调制器等。 可配置的数字模块:时钟、计数器、PWMs、UART、SPI、I2C、IrDA等。 4KB~32KB的FLASH用于代码存储:在Flash中模拟EEPROM 256B~2KB的SRAM用于数据存储
M8C微控制器:与Cypress USB使用相同的内核 (二)PSoC体系结构
PSoC总体结构图如图2.1所示,它由PSoC内核(PSoC Core)、数字系统
(Digital System)、模拟系统(Analog System)、系统资源(System Resources) 四部分组成。
图1-1 PSOC内部结构图
(1) PSoC内核
PSOC内核是PSoC系统中最核心的部分,它包括:CPU内核(M8C)、SRAM、SROM、Flash存储器、中断控制器(Interrupt Controller)、通用输入输出、模拟输出驱动、睡眠与看门狗(Sleep and Watchdog)、多个时钟源(IMO、LO、CO和PLL)。CPU内核,也称为M8C,是一个功能强大的处理器,它的工作频率可以达到24MHz。M8C是一个4MPIS的8位哈佛结构的微处理器,它所支持的指令集非常丰富。PSoC的通用输入输出(GPI/O)把器件的CPU、数字及模拟资源与外部引脚进行了连接。每个引脚都有8种不同的驱动模式,不同的驱动模式为外围接口连接提供了强大的灵活性,每个引脚会在高低电位与最近一次读操作的改变上产生系统中断。中断控制器为PSoC混合信号阵列器件提供了一种机制,这种机制可以停止当前任务的执行,而使程序的执行转向另外一个地址。
(2)数字系统
数字系统由模块阵列里的4行数字模块、全局数字连接、阵列数字连接与行数 字连接组成。不同系列器件所包含的数字模块数是不同的,设计人员可以有针对性地选择所需PSoC器件。 (3)模拟系统
模拟系统由模块阵列里的4列模拟模块及其周围的模拟参考电压(Analog Reference)、模拟输入多路选择(Analog Input Muxing)和一个模拟驱动(Analog Drivers)组成。模拟系统最多可以有12个模拟模块,其数量取决于具体的器件。每个可配置的模拟模块由一个可以产生复杂模拟信号的运算放大器组成。每个模块列包含一个B类型的连续时钟模块(CT)、一个C类型的开关电容模块(SC)和一个D类型的开关电容模块(SC)。 (4)系统资源
系统资源提供了PSoC其他的一些功能,具体功能取决于所选的PSoC器件,主要包括:能增强PSoC混合信号阵列灵活性的数字时钟;能提供一个快速8位乘法运算和32位加法运算的4个乘法加法器;用于信号处理应用的两个抽样器;
能执行IC主从设备的IC接口;能够产生一个值为1.3V的内部参考电压;在关 闭干电池供应的情况下,可以产生一个正常操作电压的电压泵;
允许每个I/O引脚连接到一个普通内部模拟总线的加强型模拟多路复用器; 一个速率达到12Mb/s的全速USB接口;M8C支持的多种系统复位。
三、实验器材:
序号 1 2 四、 实验内容:
学习使用PSoC Creator创建一个新工程,掌握CPU的基本操作与其功能,在汇编语言中声明全局变量,掌握如何去读取和修改I/O端口以及用不同驱动方式去配置了I/O端口,使用影子寄存器隔离了输入/输出的交互并配置I/O引脚去读取一个瞬时开关状态
名 称 PSOC开发板 电脑 型号与规格 CY8CKIT-030 数 量 1 1 备注 2
2
五、 实验步骤
1、CPU相关练习
步骤1:创建新工程
? 打开PSoC Creator并点击“Create New Project”
? 选择“Empty PSoC3 Design”模板,工程命名为“Lab1A”
? 在“Advanced”选项卡中,选择CY8C3866AXI-040设备(除特殊声明,所有实验都
使用CY8C3866AXI-040设备)
? 选择原理图文件“TopDesign.cysch”
? 搜索pins,选择Digital output pins,拖到图中,双击进行如下设置
? 图纸上的图如下图所示
步骤2:设置必要的全局参数
? 选择“Lab1A.cydwr”文件,点击“Pins”选项卡(如下图)
? 选择“Lab1A.cydwr”文件,点击“Clocks”选项卡(如下图)
? 除明确声明,所有实验工程都把这些参数设置为3.3V和24MHz ? “Build”工程 步骤3:编写程序
? 在Workspace Explorer中的“Source Files”上右击,Add->New Item,选择“8051
Keil Assembly File”并命名为main_asm.a51。
? 添加如下代码,0x5100H为Port0数据输出寄存器(PRT0_DR)的地址
$NOMOD51
$INCLUDE (PSoC3_8051.inc) NAME CONTROL_GPIO
segmaxcode SEGMENT CODE PUBLIC CONTROL_GPIO
segmaxdata SEGMENT DATA RSEG segmaxdata RSEG segmaxcode CONTROL_GPIO:
MOV A,#0F1H
INC A MOVX A,@DPTR MOVX @DPTR,A MOV DPTR,#05100H
RET END
;[] END OF FILE
MOVX @DPTR,A MOVX A,@DPTR INC A MOVX @DPTR,A JMP loop 备注:P0口地址 :05100H;传送地址指令MOV DPTR,##H;传送数据指令:MOV A,##H;加1指令:INC;
? 打开“main.c”文件,添加如下代码: