中南大学微控制器技术实验报告

合集下载

计算机组成原理-微程序控制器实验报告

计算机组成原理-微程序控制器实验报告

计算机组成原理实验之微程序控制器实验一、实验目的1.掌握时序发生器的组成原理。

2.掌握微程序控制器的组成原理。

二、实验内容1.实验电路(1)时序发生器电路本实验所用的时序电路见图4.1。

电路由一个500KHz晶振、2片GAL22V10、一片74LS390组成,可产生两级等间隔时序信号T1-T4、W1-W3,其中一个W由一轮T1-T4组成,相当于一个微指令周期或硬连线控制器的一拍,而一轮W1-W3可以执行硬连线控制器的一条机器指令。

另外,供数字逻辑实验使用的时钟由MF经一片74LS390分频后产生。

图4.1 时序信号发生器(2)微程序控制器电路图4.2微程序控制器电路微地址转移逻辑表达式:A5=D5=μA5;A4=D4=C•P2+μA4;A3=D3=IR7•P1+μA3;A2=D2=IR6•P1+SWC•P0+μA2;A1=D1=IR5•P1+SWB•P0+μA1;A0=D0=IR4•P1+SWA•P0+μA0。

2.一些关键技术(1)微指令格式图4.3微指令格式(3)上述8条指令的微程序流程图如图4.4所示图4.4微程序流程图(4)微程序代码表表4-2微程序代码表微指令KT RRF WRF RRM WRM PR当前微地址00 0C 1E 06 07 0B 1D 0D 0E 0A 02 03 09 04 05 08 0F 下一微地址08 1E 06 07 1E 1D 0D 0E 1D 02 03 02 04 05 04 0F 10P0 1 . . . . . . . . . . . . . . . .P1 . . . . . . . . . . . . . . . . 1P2 . . . . . . . . . . . . . . . . .备用. . . . . . . . . . . . . . . . .TJ . 1 . . 1 1 . 1 1 . 1 . 1 . 1 . .LDIR . . . 1 . . . 1 . . . . . . . . 1PC+1 . . . . . . . . . . . . . . . . .LDPC# . 1 . . . 1 . . . . . . . . . 1AR+1 . . . . . . . . . . . 1 . . 1 . .LDAR# . 1 . . . 1 . . . 1 . . 1 . . . . LDDR1 . . . . . . . . . . . . . . . . . LDDR2 . . . . . . . . . . . . . . . . . LDRi . . . . . . . . 1 . . . . . . . .SW_BUS# . 1 1 . . 1 1 . 1 1 . . 1 1 . 1 . RS_BUS# . . . . 1 . . . . . . . . . . . . ALU_BUS# . . . . . . . . . . . . . . . . . RAM_BUS# . . . . . . . . . . 1 . . . . . . CER# . . . 1 . . . 1 . . . . . . . . 1 CEL# . . 1 . . . 1 . . . 1 . . 1 . . . LR/W# . . 0 . . . 0 . . . 1 . . 0 . . . Cn# . . . . . . . . . . . . . . . . .M . . . . . . . . . . . . . . . . .S0 . . . . . . . . . . . . . . . . .S1 . . . . . . . . . . . . . . . . .S2 . . . . . . . . . . . . . . . . .S3 . . . . . . . . . . . . . . . . .表4-2微程序代码表(续)微指令ADD SUB AND STA LDA JC STP OUT当前微地址10 18 11 19 12 1A 13 1B 14 1C 15 1F 16 17 下一微地址18 0F 19 0F 1A 0F 1B 0F 1C 0F 0F 0F 0F 0FP0 . . . . . . . . . . . . . .P1 . . . . . . . . . . . . . .P2 . . . . . . . . . . 1 . . .备用. . . . . . . . . . . . . .TJ . . . . . . . . . . . . 1 1LDIR . . . . . . . . . . . . . .PC+1 . 1 . 1 . 1 . 1 . 1 1 . 1 1LDPC# . . . . . . . . . . . 1 . .AR+1 . . . . . . . . . . . . . .LDAR# . . . . . 1 . 1 . . . . .LDDR1 1 . 1 . 1 . 1 . . . . . . .LDDR2 1 . 1 . 1 . . . . . . . . .LDRi . 1 . 1 . 1 . . . 1 . . . .SW_BUS# . . . . . . . . . . . . . .RS_BUS# . . . . . . 1 . 1 . . 1 . 1ALU_BUS# . 1 . 1 . 1 . 1 . . . . . .RAM_BUS# . . . . . . . . . 1 . . . .CER# . . . . . . . . . . . . . .CEL# . . . . . . . 1 . 1 . . . .LR/W# . . . . . . 0 . 1 . . . .Cn# . . . 1 . . . . . . . . . .M . 0 . 0 . 1 . 0 . . . . . .S0 . 1 . 0 . 1 . 0 . . . . . .S1 . 0 . 1 . 1 . 0 . . . . . .S2 . 0 . 1 . 0 . 0 . . . . . .S3 . 1 . 0 . 1 . 0 . . . . . .注:后缀为#的信号都是低电平有效信号,为了在控存ROM中用“1”表示有效,这些信号在控制器中经过反相后送往数据通路。

微程序控制器实验报告

微程序控制器实验报告

计算机组成原理实验及课程设计报告书系别:计算机系专业:计算机科学与技术课程:计算机组成原理指导教师:实验人:班级:实验时间:2009.5.28-2009.6.7 编制时间:2009.6.14微程序控制器实验报告(一) 实验目的通过看懂教学计算机中已经设计好并正常运行的数条基本指令(例如:ADD,MVRR,OUT,MVRD,JR,RET 等命令)的功能、格式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。

其最终要达到的目的是: 1. 深入理解计算机微程序控制器的功能、组成知识; 2. 深入的学习计算机各类典型指令的执行流程;3. 对指令的格式、寻址方式、指令系统、指令分类等建立具体的总体的概念;4. 学习微程序控制器的设计工程和相关技术。

(二)实验过程 RCL 指令 一、指令设计a)指令格式及功能:汇编格式: RCL DR机器指令: 00101010 00000000功能:带进位C 循环左移,最高位移入C ,C 移入最低位 b)指令流程图:c)控制信号表: MAPROM MP1 MP2 MP3MP4MP5 MP6 MP7 微指下指CI 3-0 SCC 3-0 0 /MR/W 0 I 2-0 SA I 8-6 SB I 5-3 B 口 A 口 0 SST SSHSCI DC2 DC1 50H 01H30H43H78H00H64H00H说明:把地址位2AH 单元内容修改为50H ,实现译码,找到为程序的入口地址。

二、实验操作:修改MAPROM 和控存 a)MAPROM 的修改:1、 试验箱断电2、取下M APROM ,插入扩展槽,连片选信号(6000H-7FFFH )3、试验箱开电,PC 机开机4、设置试验机工作模式为:连续、内存区、组合逻辑、16位、联机5、运行PCEC16,进行PC 机与试验箱联机取地址带进位C 循环左移6、>E 602BXXXX: 0050提示:修改完之后检查是否破坏了基本指令内存。

mcu实验报告一

mcu实验报告一

东南大学自动化学院实验报告课程名称: MCU(微控制器)综合课程设计第 1 次实验实验名称:数据传送与多字节十进制加法实验院(系):自动化学院专业:自动化姓名:张涤学号:08007211实验室:测控技术实验室实验组别:同组人员:黎晓平实验时间:2008 年 3 月25 日评定成绩:审阅教师:实验报告内容:一.实验目的和要求实验目的:由于本次实验做的是两个小内容,分别是数据传送实验和多字节十进制加法实验,要求分别如下。

这两个内容的目的分别是掌握数据在存储器和寄存器中的传送过程,弄清楚数据和地址的区别,理解数据和地址的对应关系。

掌握用汇编语言进行十进制加法运算,了解进位溢出的原理,加深对片内和片外数据传送的理解。

实验要求:1. 数据传送实验把数据0A0H放到地址为40H的内存单元,并将数值和地址分别递增1,要求一共做十次这样的操作。

然后将内存空间40H-49H的数值分别传递给50H-59H的内存空间中。

2. 多字节十进制加法实验将存放在单片机内部RAM中以40H为首的3个地址单元中的一个六位十进制数与存放在50H为首的3个地址单元中的一个六位十进制数相加,将相加结果存放在以60H为首的地址RAM地址单元中。

数据存放方式:十进制数以BCD码存放,高位数据在低地址,低位数据在高地址。

(40H) (41H) (42H)+ (50H) (51H) (52H)= (60H) (61H) (62H) (63H)最高位进位存放在60H中。

数据都存放在片内数据存储器内。

二.实验原理数据传送实验中,要求是将数据传送到给定地址的内存单元中去,分别将数据和地址加1,做10次+1的操作,那么首先要将数据放在一个累加器中暂存,然后把内存单元为40H的地址单元送到DPTR中去,送去的是一个地址,因此只需要一个MOVX操作便可将累加器中的数据传送到DPTR中地址单元去,从而实现了数据传送,累加器和DPTR(存地址,实际上是数据指针)都进行+1操作,又因为要进行10次这样的操作,那么可以定义一个与0比较的判断进行10次减法即可,将0AH存放在寄存器中,然后进行减1与0比较,如此循环,直至与0相等。

计算机组成原理实验报告3--微程序控制器实验

计算机组成原理实验报告3--微程序控制器实验

计算机组成原理实验报告3--微程序控制器实验计算机组成原理实验报告3--微程序控制器实验实验三微程序控制器实验⼀.实验⽬的与要求:实验⽬的:1.理解时序产⽣器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的功能,组成知识;3.掌握微指令格式和各字段功能;4.掌握微程序的编制,写⼊,观察微程序的运⾏,学习基本指令的执⾏流程。

实验要求:1.实验前,要求做好实验预习,并复习已经学过的控制信号的作⽤;2.按练习⼀要求完成测量波形的操作,画出TS1,TS2,TS3,TS4的波形,并测出所⽤的脉冲Ф周期。

按练习⼆的要求输⼊微指令的⼆进制代码表,并单步运⾏五条机器指令。

⼆.实验⽅案:按实验图在实验仪上接好线后,仔细检查⽆误后可接通电源。

1.练习⼀:⽤联机软件的逻辑⽰波器观测时序信号,测量Ф,TS1,TS2,TS3,TS4信号的⽅法如下:(1) TATE UNIT 中STOP开关置为“RUN”状态(向上拨),STEP开关置为“EXEC”状态(向上拨)。

(2) 将SWITCH UNIT 中右下⾓CLR开关置为“1”(向上拨)。

(3) 按动“START”按钮,即可产⽣连续脉冲。

(4)调试”菜单下的“显⽰逻辑⽰波器窗⼝,即可出现测量波形的画⾯。

(5)探头⼀端接实验仪左上⾓的CH1,另⼀端接STATE UNIT中的Ф插座,即可测出时钟Ф的波形。

(6)探头⼀端接实验仪左上⾓的CH2,另⼀端接STATE UNIT中的TS1插座,即可测出TS1的波形;(7)探头⼀端接实验仪左上⾓的CH1,另⼀端接STATE UNIT中的TS2插座,即可测出TS2的波形。

(8)将红⾊探头⼀端接实验仪左上⾓的CH1,另⼀端接STATE UNIT中的TS3插座,即可测出TS3的波形。

(9)将红⾊探头⼀端接实验仪左上⾓的CH1,另⼀端接STATE UNIT中的TS4插座,即可测出TS4的波形。

2.观察微程序控制器的⼯作原理:①关掉实验仪电源,拔掉前⾯测时序信号的接线;②编程写⼊E2PROM 2816A.将编程开关(MJ20)置为PROM(编程)状态;B.将实验板上STATE UNIT 中的STEP置为STEP状态,STOP置为RUN状态,SWITCH UNIT中CLR开关置为1状态;C.在右上⾓的SWITCH UNIT中UA5-UA0开关上置表3.2中某个要写的微地址;D.在MK24-MK1开关上置表3.2中要写的微地址后⾯的24位微代码,24位开关对应24位显⽰灯,开关置为1时灯亮,为0时灯灭;E.启动时序电路,即将微代码写⼊到E2PROM 2816的相应地址对应的单元中;F.重复C-E步骤,将表 3.2的每⼀⾏写⼊E2PROM 2816。

微程序控制器实验报告

微程序控制器实验报告

一、实验目的1、通过实验,进一步理解微程序控制器的组成结构。

理解微程序控制器的控制原理2、加深理解微程序控制器的工作原理。

掌握指令流程与功能3、理解掌握微程序控制器的设计思路与方法二、实验内容与步骤1、微程序控制器的组成原理控制存储器:实现整个指令系统的所有微程序,一般指令系统是规定的由高速半导体存储器构成,容量视机器指令系统而定,取决于微程序的个数,其长度就是微指令字的长度。

微指令寄存器:存放从控存读出的当前微指令。

微操作控制字段将操作控制信号送到控制信号线上,微地址字段指出下一条微地址的形成。

微地址寄存器:存放将要访问的下一条微指令地址地址转移逻辑:形成将要执行的微指令地址,形成方式:取指令公操作所对应的微程序一般从控存的0地址开始,所以微程序的人口地址0是由硬件控制的。

当出现分支时,通过判别测试字段、微地址字段、和执行部件的反馈信息形成后即微地址。

Cpu设计步骤:1.拟定指令系统2.确定总体结构(数据通路)3.安排时序4.拟定指令流程。

根据指令系统,写出对应所有机器指令的全部微操作机器节拍安排,然后列出操作时间表5.确定微指令的控制方式、下地址形成方式、微指令格式及微指令字长,编写全部的微指令的代码,最后将编写的微指令放入控制存储器中。

微程序控制器的设计步骤(1)设计微程序确定微程序流程图,也就是控制算法流程图。

(2)确定微指令格式微指令格式中的操作控制字段取决于执行部件的子系统需要多少微指令。

假定采用直接控制方式,执行部件需要10个微命令,则操作控制字段需要10位。

测试判别字段取决于微程序流程图中有多少处分支转移。

假定有3处分支,则测试判别字段需要3位。

下址字段取决于微程序流程图的规模。

假定微程序共用50条微指令,则下址字段至少需要6位。

这是因为ROM地址译码时,26=64,6位地址可容纳64条微指令。

(3)将微程序编译成二进制代码(4)微程序写入控制存储器(5)设计硬件电路三、实验现象--CPU 头文件cpu_defsLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE cpu_defs IS --定义程序包,包头,包体TYPE opcode IS (load, store, add, sub, bne); --这个语句适合于定义一些用std_logic 等不方便定义的类型,综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0 CONSTANT word_w: NATURAL :=8;CONSTANT op_w: NATURAL :=3;CONSTANT rfill: STD_LOGIC_VECTOR(op_w-1 downto 0):=(others =>'0');--FUNCTIOn slv2op(slv:IN STD_LOGIC_VECTOR) RETURN opcode;FUNCTION op2slv(op:in opcode) RETURN STD_LOGIC_VECTOR;END PACKAGE cpu_defs;PACKAGE BODY cpu_defs ISTYPE optable IS ARRAY(opcode) OF STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);--数组有5个元素,其他均0CONSTANT trans_table:optable :=("000", "001", "010", "011", "100");FUNCTION op2slv(op:IN opcode) RETURN STD_LOGIC_VECTOR ISBEGINRETURN trans_table(op);END FUNCTION op2slv;END PACKAGE BODY cpu_defs;--实验7-8 微程序控制器实验LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL,IEEE.NUMERIC_STD.ALL;USE WORK.CPU_DEFS.ALL;--使用自己定义的程序包ENTITY CPU ISPORT( clock : IN STD_LOGIC;--时钟reset : IN STD_LOGIC;--复位mode : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --查看用mem_addr : INUNSIGNED(word_w-op_w-1 DOWNTO 0);--地址output : OUT STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);data_r_out : OUT STD_LOGIC_VECTOR(19 DOWNTO 0);--微指令Rop_out : OUT STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);--操作码add_r_out : OUT UNSIGNED(4 DOWNTO 0) --微地址R);END ENTITY;ARCHITECTURE rtl OF CPU ISTYPE mem_array IS ARRAY (0 TO 2**(word_w-op_w)-1) OF STD_LOGIC_VECTOR(word_w-1DOWNTO 0);--定义RAMSIGNAL mem : mem_array;CONSTANT prog : mem_array:=(0=> op2slv(load) & STD_LOGIC_VECTOR(TO_UNSIGNED(4,word_w-op_w)),1=> op2slv(add) & STD_LOGIC_VECTOR(TO_UNSIGNED(5,word_w-op_w)),2=> op2slv(store) & STD_LOGIC_VECTOR(TO_UNSIGNED(6,word_w-op_w)),3=> op2slv(bne) & STD_LOGIC_VECTOR(TO_UNSIGNED(7,word_w-op_w)), --TO_UNSIGNED转换函数将4转换为5位“00100”4=> STD_LOGIC_VECTOR(TO_UNSIGNED(2,word_w)),5=> STD_LOGIC_VECTOR(TO_UNSIGNED(3,word_w)),OTHERS => (OTHERS =>'0'));TYPE microcode_array IS ARRAY (0 TO 14) OF STD_LOGIC_VECTOR(19 DOWNTO 0); CONSTANT code : microcode_array:=(--控制存储器0=> "00010100010000000001",1=> "00000000000110000010",2=> "00001010000000000011",3=> "00000100001000001111",4=> "00100010000000000000",5=> "00000000000100000000",6=> "00000010100001000000",7=> "00000010100000100000",8=> "00000000000110000100",9=> "01000001000000000101",10=> "00000000000110000110",11=> "00000000000110000111",12=> "00000000000110010000",13=> "10000010000000000000",14=> "00000000000000000000");SIGNAL count : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL op : STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);SIGNAL z_flag : STD_LOGIC;SIGNAL mdr_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL mar_out : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL IR_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL acc_out : UNSIGNED(word_w-1 DOWNTO 0);SIGNAL sysbus_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);EGINPROCESS(reset,clock)VARIABLE instr_reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE acc : UNSIGNED(word_w-1 DOWNTO 0);CONSTANT zero : UNSIGNED(word_w-1 DOWNTO 0):=(OTHERS =>'0')VARIABLE mdr : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE mar : UNSIGNED(word_w-op_w-1 DOWNTO 0);VARIABLE sysbus : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE microcode : microcode_array;VARIABLE add_r : UNSIGNED(4 DOWNTO 0);VARIABLE data_r : STD_LOGIC_VECTOR(19 DOWNTO 0);VARIABLE temp : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINIF reset='0' THENadd_r:=(OTHERS =>'0');count <= (OTHERS =>'0');instr_reg := (OTHERS =>'0');acc := (OTHERS =>'0');mdr := (OTHERS =>'0');mar := (OTHERS =>'0');z_flag <='0';mem <= prog;sysbus :=(OTHERS =>'0');ELSIF RISING_EDGE(clock) THEN--microprogram controllerdata_r := code(TO_INTEGER(add_r));IF data_r(4 DOWNTO 0)="01111" THEN --判断下地址temp:="01" & op(2 DOWNTO 0);add_r := UNSIGNED(temp);ELSIF data_r(4 DOWNTO 0)="10000" THENIF z_flag='1' THENadd_r:="01110";ELSEadd_r :="01101";END IF;ELSEadd_r := UNSIGNED(data_r(4 DOWNTO 0));END IF;data_r_out <=data_r;add_r_out <= add_r;--PCIF data_r(16)='1' THEN --PC_bus='1'sysbus := rfill & STD_LOGIC_VECTOR(count);END IF;IF data_r(19)='1' THEN --load_PC='1'count <= UNSIGNED(mdr(word_w-op_w-1 DOWNTO 0));ELSIF data_r(10)='1' THEN --INC_PC='1'count <= count+1;ELSEcount <= count;END IF;--IRIF data_r(15)='1' THEN --load_IRinstr_reg := mdr;END IF;IF data_r(9)='1' THEN --Addr_bus='1'sysbus := rfill & instr_reg(word_w-op_w-1 DOWNTO 0);END IF;op <= instr_reg(word_w-1 DOWNTO word_w-op_w);IR_out <= instr_reg;op_out <=op;--ALUIF data_r(17)='1' THEN --load_ACC='1'acc:=UNSIGNED(mdr);END IF;IF data_r(11)='1' THEN --ALU_ACC='1'IF data_r(6)='1' THEN --ALU_add='1'acc := acc + UNSIGNED(mdr);ELSIF data_r(5)='1' THEN --ALU_sub='1'acc := acc - UNSIGNED(mdr);END IF;END IF;IF data_r(18)='1' THEN --ACC_bus='1'sysbus := STD_LOGIC_VECTOR(acc);END IF;IF acc=zero THENz_flag <='1';ELSEz_flag <='0';END IF;acc_out<= acc;--RAMIF data_r(14)='1' THEN --load_MAR='1'mar := UNSIGNED(sysbus(word_w-op_w-1 DOWNTO 0));ELSIF data_r(12)='1' THEN --load_MDR='1'mdr := sysbus;ELSIF data_r(8)='1' THEN --CS='1'IF data_r(7)='1' THEN --R_NW='1'mdr := mem(TO_INTEGER(mar));ELSEmem(TO_INTEGER(mar))<=mdr;END IF;END IF;IF data_r(13)='1' THEN --MDR_bus='1'sysbus:=mdr;END IF;mdr_out <= mdr;mar_out <= mar;END IF;sysbus_out <=sysbus;END PROCESS;PROCESS(mode,mem_addr)BEGIN--mode=0 -> sysbus--mode=1 -> PC--mode=2 -> result of ALU--mode=3 -> IR--mode=4 -> MAR--mode=5 -> MDR--mode=6 -> memoutput <= (OTHERS =>'0');CASE mode isWHEN "000" =>output<=sysbus_out;WHEN "001" =>output(word_w-op_w-1 DOWNTO 0)<= STD_LOGIC_VECTOR(count);WHEN "010" =>output <= STD_LOGIC_VECTOR(acc_out);WHEN "011" =>output <= IR_out;WHEN "100" =>output(word_w-op_w-1 DOWNTO 0) <= STD_LOGIC_VECTOR(mar_out);WHEN "101" =>output <= mdr_out;WHEN "110" =>output <= mem(TO_INTEGER(mem_addr));WHEN others =>output <= (OTHERS =>'Z');END CASE;END PROCESS;END ARCHITECTURE;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。

中南大学智能控制实验报告

中南大学智能控制实验报告

三、实验内容与步骤
1. 参考流程图编写程序,汇编、链接、装载;
其中,主程序主要完成系统初始化、查表并输出控制量等功能;IRQ7中断子程序是为了处理A/D转换完后产生的中断;IRQ6中断子程序是为了给采样周期计时,并且每一次中断产生一次PWM脉冲。

2. 参照下图接线,检查接线无误后,运行程序;
3. 用系统提供的专用图形显示窗口观察响应曲线,记录超调和过渡时间。

(3). 检查无误后运行程序,用示波器观察输入端R和输出端C。

若系统性能不太好,根据实验现象改变相应的学习速率直到满意为止,并记下此时的响应曲线;
(4). 当响应曲线稳定后,断开“ST”和“S”端,使被控对象处于不锁零的状态;此时去掉被控对象中的10μF的电容(改变对象的时间常数),观察并记录此时的响应曲线。

2. 常规数字PID闭环控制器实验
(1). 编写数字PID控制器程序,汇编、链接、装载到控制机中;
(2). 按照单神经元闭环控制器实验步骤2~4进行操作。

参考程序中规定采样周期T及学习速率P1,P2,P3的取值范围为:
控制器中的参数可遵循如下的调节规律:
(1).初始加权系数W1(0)、W2(0)、W3(0)可以任意选取,参考程序中全部取为0100H;
(2).一般K值偏大将使系统响应超调过大,K值偏小使过渡过程时间加长,参考程序中K值取为1;
四、实验结果与数据处理
实验得到的函数图如下:。

实验三 微控制器实验

实验三  微控制器实验

5. 微指令的基本格式 微指令的格式大体分成两类:水平型微指令和 垂直型微指令。水平型微指令的基本结构如下图 所示。微指令是由操作控制和顺序控制两大部分 组成 。
6 微程序控制器原理框图 微程序控制器主要由控制存储器、微指 令寄存器和地址转移逻辑三大部分组成。
数据通路结构框图
实验箱中的微指令格式
② 校验 A.将编程开关设置为READ(校验)状态。 B.将实验板的“STEP”开关置为“STEP”状 态。“STOP”开关置为“RUN”状态。 C.用二进制开关置好微地址MA5—MA0。 D.按动“START”键,启动时序电路,读出微 代码,观察显示灯MD24—MD1的状态(灯 亮为“0”,灭为“1”),检查读出的微代码 是否与写入的相同。如果不同,则将开关 置于PROM编程状态,重新执行①UA0)
三、实验仪器 TDN—CM+计算机组成原理教学实验系统一 台,排线若干,表笔一副。 四、实验步骤 (1) 准备表4-2的二进制代码表。 (2) 按图3-6连接实验线路,仔细查线无误后 接通电源。 (3) 观测时序信号 ⑷ 程序控制器的 工作原理(重点)
③ 单步运行 A.将编程开关置于“RUN”(运行)状态。 B.实验板上的“STEP”及“STOP”开关保持 原状。 C.操作CLR开关(拨动开关在实验板右下角) 使CLR信号1→0→1,微地址寄存器MA5— MA0清零,从而明确本机的运行入口微地 址00(八进制),000000(二进制)。 D.按动“START”键,启动时序电路,则每按 动一次启动键,读出一条微指令后停机, 此时实验台上的微地址显示灯和微命令显 示灯将显示所读出的一条指令。
④连续运行 A.将编程开关置为“RUN”(运行)状态。 B.将实验板的单步开关“STEP”置为“EXEC” 状态。 C.使CLR从1→0→1,此时微地址寄存器清 “0”,从而给出取指微指令的入口地址为 00(八进制)开始执行,000000(二进 制)。 D.启动时序电路,则可连续读出微指令。

实验四 微控制器实验

实验四 微控制器实验

实验四微控制器实验1 节拍脉冲发生器时序电路实验实验课件参考:/CMPUT_EXPMT/Experiments/Expmt4 / 实验4-1.ppt实验示例参考:/CMPUT_EXPMT/Experiments/Expmt4 / DEMO_4_1_S_T一.实验目的(1)掌握节拍脉冲发生器的设计方法和工作原理。

(2)理解节拍脉冲发生器的工作原理。

二.实验原理计算机之所以能够按照人们事先规定的顺序进行一系列的操作或运算,就是因为它的控制部分能够按一定的先后顺序正确地发出一系列相应的控制信号。

这就要求计算机必须有时序电路。

控制信号就是根据时序信号产生的。

本实验说明时序电路中节拍脉冲发生器的工作原理。

1、连续节拍发生电路设计(图4-1-1):可由4 个D 触发器组成,可产生4 个等间隔的时序信号T1~T4,其中CLK1 为时钟信号,由实验台右边的方波信号源clock0 提供,可产生1Hz~12MHz 的方波信号频率。

实验者可根据实验自行选择信号频率。

当RST1 为低电平时,T1 输出为“1”,而T2、T3、T4 输出为“0”;当RST1 由低电平变为高电平后,T1~T4将在CLK1 的输入脉冲作用下,周期性地轮流输出正脉冲,机器进入连续运行状态(EXEC)。

T1~T4 以及CLK1、RST1 的工作波形如图4-1-2 所示。

示例工程文件是T4.bdf。

硬件实验验证方法如图4-1-1 所示,下载T4.SOF 文件,选择实验模式1,Clock0 接4Hz,键8 控制RST1,高电平时可以看到,发光管1、2、3、4 分别显示T1、T2、T3、T4 的输出电平(实验结果与仿真波形图4-1-2 比较!)。

2、单步节拍发生电路(图4-1-3):将图4-1-1 电路稍加改变即可得到图4-1-3 所示的单步运行电路。

该电路每当RST1 出现一个负脉冲后,仅输出一组T1、T2、T3、T4 节拍信号,直到RST1 出现下一个负脉冲,波形如图4-1-4 所示。

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

中南大学微控制器技术实验报告目录实验目的和要求 0硬件、软件环境要求 0实验一、清零程序与拆字程序设计 (1)实验二、拼字程序与数据传送程序设计 (3)实验三、散转与排序程序设计 (6)实验四、数字量的输入输出实验 (8)实验五、定时器\计数器实验 (12)实验六A/D、D/A转换实验 (16)实验七、串行通信实验 (19)总结 (23)实验目的和要求1熟练掌握Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法;2熟练使用SST89C554RC单片机核心板及I/O扩展实验系统;3熟练掌握在Keil C51与Proteus仿真软件虚拟联机环境下,基于51单片机控制器数字接口电路的硬件、软件设计与功能调试;4完成MCS51单片机指令系统软件编程设计和硬件接口功能设计题;硬件、软件环境要求软件环境描述该实验使用Keil C51集成开发环境作为实验设计、调度工具。

Keil C51提供了强大的调度功能,可单步、断点、全速运行程序,可观察寄存器区、ROM变量区、RAM变量区等的内容。

支持汇编语言和C语言的源程序语言调试。

硬件环境本实验采用开放的系统板结构,可以灵活地配合各型号接口实验平台开展单片机的应用教学。

其提供了丰富的原理及接口应用实验。

配合接口实验平台可完成数字量输入/输出、中断、定时器/计数器、看门狗、低功耗、PCA、串口通讯、静态存储器、FLASH、A/D、D/A、键盘及数码显示、电子音响、点阵LED、LCD、步进电机、直流电机、温度控制等实验内容。

TD-51系统板上提供了一片SST89E554RC,该器件是SST公司推出的8位微控制器FlashFlex51家族中的一员,具有如下特征:与8051兼容,嵌入SuperFlash存储器;工作电压5V,工作时钟0~40MHz;1Kbyte内部RAM;两块SuperFlash EEPROM,主块32Kbyte,从块8Kbyte,扇区为128Byte;有三个高电流驱动端口(每个16mA);三个16位的定时器/计数器;全双工、增强型UART; 八个中断源,四级优先级;可编程看门狗定时器(WDT);可编程计数阵列(PCA);双DPTR寄存器;低EMI模式(可禁止ALE);SPI串行口;标准每周期12个时钟,器件提供选项可使速度倍增,达到每周期6个时钟;低功耗模式。

实验一、清零程序与拆字程序设计一、实验目的1、加深对单片机存储结构的认识;2、学会单片机基本指令的使用;二、实验要求1、把7000H-7FFFH的内容清零;2、把7000H的内容拆开,高位送7001H的低位,低位送7002H的低位,7001H,7002H的高位清零,一般本程序用于将数据送显示缓冲区时用。

三、程序设计框图及程序清单清零程序流程图ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR,#7000H ;片内RAM首地址MOV A, #01H ;写入数据初值MOV R6, #20H ;循环变量LOOP2: MOV R7, #80HLOOP1: MOVX @DPTR, A ;写数据到RAMINC DPTR ;地址加1DJNZ R7, LOOP1DJNZ R6, LOOP2SJMP $拆字程序流程图ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR,#7000H ;MOV A,#12H ;MOVX @DPTR,A ;RR A ;RR A ;RR A ;RR A ;ANL A,#0FH ; 高位送7001H低位MOV DPTR,#7001H ;MOVX @DPTR,A ;MOV DPTR,#7000H ;MOVX A,@DPTR ;ANL A,#0FH ; 低位送7002H低位 MOV DPTR,#7002H ;MOVX @DPTR,A ;SJMP $ ;设置断点, 观察实验结果中的内容END四、实验结果清零程序拆字程序实验二、拼字程序与数据传送程序设计一、实验目的1、加深对单片机存储结构的认识;2、学会单片机基本指令的使用;二、实验要求1、把7000H,7001H的低位相拼后送到7002H,一般本程序用于将显示缓冲区的数据取出组成单个字节。

2、把(R2,R3)源RAM区首址内的(R6,R7)个字节数据传送到(R4,R5)目的RAM区。

三、程序设计框图及程序清单拼字程序框图及程序清单ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR,#7000H ;MOV A,#01H ;MOVX @DPTR,A ;ANL A,#0FH ;屏蔽高位SWAP A ;MOV B,A ;MOV DPTR,#7001H ;送7001HMOV A,#0AH ;MOVX @DPTR,A ;ANL A,#0FH ;ORL A,B ;拼送后送7002HMOV DPTR,#7002H ;MOVX @DPTR,A ;SJMP $ ;设置断点, 观察实验结果中的内容END数据传送程序框图及程序清单ORG 0000HLJMP MAINORG 0100HMAIN: MOV R2,#70H ;MOV R3,#00H ;源地址MOV R4,#71H ;MOV R5,#00H ;目的地址MOV R6,#00H ;MOV R7,#07H ;传送个数MOV R1,#10H ;MOV R0,#07H ;MOV DPH,R2 ;MOV DPL,R3 ;MOV A,R1 ;L0:MOVX @DPTR,A ;INC DPTR ;DJNZ R0,L0 ;赋值L2: MOV R7,#0FFH ;L1: MOV DPH,R2 ;MOV DPL,R3 ;MOVX A,@DPTR ;INC DPTR ;MOV R2,DPH ;MOV R3,DPL ;MOV DPH,R4 ;MOV DPL,R5 ;MOVX @DPTR,A ;INC DPTR ;MOV R4,DPH ;MOV R5,DPL ;DJNZ R7,L1 ;DJNZ R6,L2 ;SJMP $END四、实验结果拼字程序数据传送程序实验三、散转与排序程序设计一、实验目的1、掌握分支程序设计,学习散转指令的使用以及散转表的概念2、掌握循环结构程序的设计。

二、实验要求1、根据8032片内20H中的内容(00或01或02或03)进行散转。

2、编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。

三、程序方框图及程序清单散转程序框图及程序清单ORG 0000HLJMP MAINORG 0100HMAIN:MOV R0,#02MOV A,R0RL AADD A,R0MOV DPTR,#TAJMP @A+DPTRTA: LJMP PM0LJMP PM1LJMP PM2LJMP PM3PM0: MOV R1,#01HLJMP MAINPM1: MOV R2,#02HLJMP MAINPM2: MOV R3,#03HLJMP MAINPM3: MOV R4,#04HLJMP MAINOVER: SJMP $END排序程序ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0,#10H ;初始地址MOV R7,#04H ;外循环次数(参与比较的数的个数-1) ACALL MAOPSJMP $MAOP:L1: MOV A,R0 ;赋给初始地址MOV R1,AINC R1 ;取第二个数的地址MOV A,R7MOV R6,AL2: MOV A,@R0CLR CSUBB A,@R1 ;两数进行比较JC L3 ;前数小于后数则保持位置不变MOV A,@R0 ;否则,交换位置XCH A,@R1MOV @R0,AL3: INC R1DJNZ R6,L2 ;内循环是否完成INC R0DJNZ R7,L1 ;外循环是否完成RET ;返回主程序END实验四、数字量的输入输出实验基础部分一、实验目的了解PI口做输入输出方式使用时,CPU对PI口的操作方式。

二、实验要求P1口是8位准双向口,没以为均可独立定义为输入输出。

编写实验程序,将P1口得低四位定义为输出,高四位定义为输入,数字量从P1口得高四位输入,从P1口得低四位输出控制发光二极管的亮灭。

三、硬件电路原理图四、程序设计框图及程序清单ORG 0000HMAIN: ORL P1,#0FH ;取P1口的高字节,定义为输入MOV A, P1SWAP AMOV P1,A ;将P1口的低四位作为输出SJMP MAINEND五、实验步骤1按图接好试验线路图,图中圆圈表示不要通过排线连接2编写实验程序,编译链接无误后进入调试状态3运行实验程序,观察实验现象,验证程序正确性4按复位键,结束程序运行,退出调试状态六、接线图及仿真结果提高部分题目二:LED灯控制(使用8255接口芯片)一、实验要求使用汇编语言编程,功能为:通过KK1实现LED灯工作方式即时控制,完成LED开关控制显示和LED灯左循环、右循环、间隔闪烁功能。

二、硬件电路原理图三、程序清单ORG 0000HLJMP MAINORG 0100HMAIN : MOV P1,#0FFH ;初始化MOV A,P1 ;将输入写进累加器ASWAP AANL A,#0FHMOV P1,A ;输出显示LJMP MAIN ;循环不断检测P1口输入端的新状态 SJMP $ENDLED灯控制:ORG 0000HLJMP MAINORG 0100HMAIN: MOV TMOD, #60H ;设置T1为模式2,外部计数方式 MOV TH1,#0FFH ;T1计数器赋初值MOV TL1,#0FFHMOV DPTR,#7300HMOV A,#80HMOVX @DPTR,AMOV DPTR,#7100HSETB TR1 ;开启计数器LEFT: MOV R0,#08H ;左循环MOV A,#01HA1: MOVX @DPTR,ALCALL DELAYRL ADJNZ R0,A1JBC TF1,RIGHT ;查询T1溢出标志,TF1=1时转移 JMP LEFTRIGHT: MOV R0,#08H ;右循环MOV A,#80HA2: MOVX @DPTR,ALCALL DELAYRR ADJNZ R0,A2JBC TF1,SHANSHUO ;查询T1溢出标志,TF1=1时转移 JMP RIGHTSS: MOV R0,#08H ;闪烁LP1: MOV A,#55HMOVX @DPTR,ALCALL DELAYMOV A,#0AAHMOVX @DPTR,ALCALL DELAYDJNZ R0,LP1JBC TF1, LEFT ;查询T1溢出标志,TF1=1时转移JMP SHANSHUODELAY: MOV R1,#0FFHDEL1: MOV R2,0FFHDEL2: DJNZ R2, DEL2DJNZ R1,DEL1RETSJMP $END四、接线图及仿真结果五、结果分析利用计数器T1外部技术方式,当外部输入脉冲引脚上出现电平负跳变时,T1计数器加一,溢出标志TF1置一,然后改变LED灯亮的方式,同时,将标志位TF1复位,进入下一轮的计数溢出等待。

相关文档
最新文档