当前位置:文档之家› 对于EPM240T100C5单片机的功能实用实验报告

对于EPM240T100C5单片机的功能实用实验报告

对于EPM240T100C5单片机的功能实用实验报告
对于EPM240T100C5单片机的功能实用实验报告

对于EPM240T100C5单片机的功能实用实验报告实验目的

1.熟悉QUARTERS软件中对于VHDL 和Verilog语言的编辑

2.了解EPM240T100C5单片机的板子上的功能

实验模块编辑

模块一:时钟信号

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_Arith.ALL;

USE IEEE.STD_LOGIC_Unsigned.ALL;

USE IEEE.NUMERIC_STD.ALL;//--引用文件

ENTITY new_clock IS

PORT(

clk_in: IN STD_LOGIC;// --系统时钟50MHz

clk_out_50hz: OUT STD_LOGIC;

clk_out_100hz: OUT STD_LOGIC;

clk_out_1000hz: OUT STD_LOGIC

);//--设置输入输出变量

END;

ARCHITECTURE ONE OF new_clock IS

Constant num3: integer:=25000;

Constant num4: integer:=250000;

Constant num5: integer:=500000;

signal clk3: std_logic;

signal clk4: std_logic;

signal clk5: std_logic;

BEGIN

PROCESS(clk_in)

VARIABLE temp3: INTEGER RANGE 0 TO 50000000:=0;

VARIABLE temp4: INTEGER RANGE 0 TO 50000000:=0;

VARIABLE temp5: INTEGER RANGE 0 TO 50000000:=0;

BEGIN

IF RISING_EDGE(clk_in) THEN

if temp5

temp5:=temp5+1;else

temp5:=0;

clk5 <=not clk5;

end if;//--设置时钟信号为50Hz

if temp4

temp4:=temp4+1;else

temp4:=0;

clk4 <=not clk4;

end if;//--设置时钟信号为100Hz

if temp3

temp3:=temp3+1;else

temp3:=0;

clk3 <=not clk3;

end if;//--设置时钟信号为1000Hz

END IF;

END PROCESS;

clk_out_1000hz<=clk3;

clk_out_100hz<=clk4;

clk_out_50hz<=clk5;

END;

时钟信号顶层文件

模块二

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_Arith.ALL;

USE IEEE.STD_LOGIC_Unsigned.ALL;

USE IEEE.NUMERIC_STD.ALL;//--引用文件

entity LED is

port(clk_100hz: in std_logic;

reset: in std_logic;

clk_1000hz: in std_logic;

shuma: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

men: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

led: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)

);//--设置输入输出其中shuma,led有6个输出,men有3个输出

end;

architecture aaa of LED is

signal a: std_logic_vector(6 downto 0);

signal b: std_logic_vector(6 downto 0);

signal c: std_logic_vector(6 downto 0);

signal d: std_logic_vector(6 downto 0);

begin

process(clk_100hz)

Variable biu: integer range 0 to 1600:=1600;//biu是一个计时信号,在程序中起计时作用variable bili: integer range 1 to 2 :=1;

begin

if rising_edge(clk_100hz) then

if bili=0 then

led<=a;bili:=bili+1;

else led<=b;bili:=bili-1;

end if;

if reset='0' then

biu:=1600;

end if;

if biu>1000 then//--这个IF语句是控制芯片上的交通灯模块

a<="1010100";b<="0101001";

elsif biu>800 then

a<="1010010";b<="0101001";

elsif biu>200 then

a<="1010001";b<="0101100";

elsif biu>0 then

a<="1010001";b<="0101010";

else biu:=1600;

end if;

case biu is//--这个case语句控制数码管的显示

when 1600 =>c<="1011011";d<="1110000";//--其中c变量控制左起第一盏灯when 1500 =>c<="0110011";d<="1011111";//--d变量控制左起第二盏灯

when 1400 =>c<="1111001";d<="1011011";

when 1300 =>c<="1101101";d<="0110011";

when 1200 =>c<="0110000";d<="1111001";

when 1100 =>c<="1111110";d<="1101101";

when 1000 =>c<="0110000";d<="0110000";

when 900 =>c<="1111110";d<="1111110";

when 800 =>c<="1110000";d<="1011011";

when 700 =>c<="1011111";d<="0110011";

when 600 =>c<="1011011";d<="1111001";

when 500 =>c<="0110011";d<="1101101";

when 400 =>c<="1111001";d<="0110000";

when 300 =>c<="1101101";d<="1111110";

when 200 =>c<="0110000";d<="0110000";

when 100 =>c<="1111110";d<="1111110";

when others =>null;

end case;//--

7段数码管如图所示(由于没有用到小数点所以是7段),c,d变量中的7位数分别控制数码管中的abcdefg段,其中1表示高电平点亮,0表示低电平。

biu:=biu-1;

end if;

end process;

process(clk_1000hz)

variable bilibili: integer range 1 to 3 :=1;

begin

if rising_edge(clk_1000hz) then

case bilibili is

when 1=> men<="1110";shuma<=c;

when 2=> men<="1101";shuma<=d;

when others =>null;

end case;

bilibili:=bilibili+1;

if bilibili=3 then

bilibili:=1;

end if;

end if;

end process;

end;

模块二顶层文件

模块三

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_Arith.ALL;

USE IEEE.STD_LOGIC_Unsigned.ALL;

USE IEEE.NUMERIC_STD.ALL;

entity LED is

port(clk_50hz: in std_logic;

reset: in std_logic;

led_8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);//--八盏LED控制变量

clk_2000hz: in std_logic;//--2000Hz输入信号

bee: out std_logic;//--蜂鸣器控制变量

led_64: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)//--8X8点阵图控制变量

);

end;

architecture aaa of LED is

signal a: std_logic;

begin

process(clk_50hz)

Variable biu: integer range 0 to 1500:=1500;//--biu是一个计时信号没有实际的输入输出begin

if rising_edge(clk_50hz) then

if reset='0' then

biu:=1500;

end if;

if biu>1100 then

a<='0';

elsif biu<=1100 and biu>=1075 then

a<='1';

elsif biu>350 then

a<='0';

elsif biu<=350 and biu>=325 then

a<='1';

else a<='0';

end if;

if biu>1000 then

LED_64<="1110011111111111";

elsif biu>750 then

LED_64<="1100001100111100";

elsif biu>250 then

LED_64<="0000000000011000";

elsif biu>0 then

LED_64<="1100001100111100";

else biu:=1500;

end if;//--8X8点阵图模块

如图所示为一个8X8点阵图的原理图,LED_64中有16个变量,其中前8位控制列电平,后8位控制行电平。输出1为高电平,0为低电平。例如11100111 11111111这个语句表示第四第五列的导线上给予低电平,而剩下的行列都给予高电平,由二极管的性质我们知道只有4,5两列的发光二级管会被点亮。

case biu is//--控制8盏流水灯,根据biu变量的变化而产生不同图案

when 1500 =>led_8<="00000001";

when 1475 =>led_8<="00000010";

when 1450 =>led_8<="00000100";

when 1425 =>led_8<="00001000";

when 1400 =>led_8<="00010000";

when 1375 =>led_8<="00100000";

when 1350 =>led_8<="01000000";

when 1325 =>led_8<="10000000";

when 1300 =>led_8<="00000000";

when 1000 =>led_8<="11111111";

when 750 =>led_8<="10101010";

when 725 =>led_8<="01010101";

when 700 =>led_8<="10101010";

when 675 =>led_8<="01010101";

when 650 =>led_8<="00000000";

when 250 =>led_8<="11111111";

when others =>null;//--biu为其他值的时候不显示

end case;

biu:=biu-1;

end if;

end process;

process(clk_2000hz)//--蜂鸣器控制模块

begin

bee<=clk_2000hz and a;//--将2000Hz信号输出给蜂鸣器,并且当a信号为高电平的时候蜂鸣器工作

end process;

end;

//

模块封装

模块四

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_Arith.ALL;

USE IEEE.STD_LOGIC_Unsigned.ALL;

USE IEEE.NUMERIC_STD.ALL;

entity traffic is

port(clk_50hz: in std_logic;//--输入50Hz信号

clk_100hz: in std_logic;//--输入100Hz信号

reset: in std_logic;//--输入清零型号

led: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)//--7位输出信号

);

end;

architecture aaa of traffic is

signal a: std_logic_vector(6 downto 0);

signal b: std_logic_vector(6 downto 0);

begin

process(clk_50hz)

Variable biu: integer range 0 to 1500:=1500;

begin

if rising_edge(clk_50hz) then//--交通灯控制模块

if reset='0' then

biu:=1500;

end if;

if biu>1000 then

a<="1010100";b<="0101001";

elsif biu>750 then

a<="1010010";b<="0101001";

elsif biu>250 then

a<="1010001";b<="0101100";

elsif biu>0 then

a<="1010001";b<="0101010";

else biu:=1500;

end if;

biu:=biu-1;

end if;

end process;

process(clk_100hz)

variable bili: integer range 1 to 3 :=1;

begin

if rising_edge(clk_100hz) then

if bili=0 then

led<=a;bili:=bili+1;

else led<=b;bili:=bili-1;

end if;

end if;

end process;

end;//

模块封装

实验模块组合

我们将上述模块组合成两个程序

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

实验4指导书 555定时器电路设计

实验4 555定时器电路设计 预习内容 阅读《电工电子实验教程》第6.5节中555集成定时器应用的内容。 预习实验的内容,自拟实验步骤和数据表格,完成理论设计,画出原理电路,选择所用元件名称、数量,熟悉元件引脚,手写预习报告。 一、实验目的 1.熟悉集成定时器555的工作原理及应用。 2.熟悉时钟信号产生电路的设计方法。 3.掌握使用定时器555设计多谐振荡器的方法。 二、知识要点 时钟信号在电子电路中有着非常重要的作用,而生成周期时钟信号的方法也有多种。比较常用的方法就是使用555定时器构成多谐振荡器。此电路广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。 555定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极性工艺制作的称为555,用CMOS工艺制作的称为7555。555定时器的电源电压范围宽,可在4.5V~16V 工作,7555可在3~18V工作,输出驱动电流约为200mA,因而其输出可与TTL、CMOS或者模拟电路电平兼容。555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。 图5-1 555定时器的结构图和引脚分布图 1脚-GND,接地脚; 2脚-Trigger,低电平触发端; 3脚-Output,输出端; 4脚-Reset,复位端,低电平有效; 5脚-Control V oltage,电压控制端; 6脚-Threshold,阈值输入端; 7脚-Discharge,放电端; 8脚-V CC,电源端。 三、实验内容 题目:时钟信号发生电路设计 设计一个电路,能够产生时钟信号,要求信号频率可调,设计范围不小于500Hz~1000Hz,

单片机第一次实验报告

单片机第一次实验报告 姓名: 学号: 班级:

实验报告 课程名称:微机原理与接口技术指导老师:学生姓名:学号:专业:自动化日期:20140327 地点: 实验一实验名称 1. 实验目的和要求 1.掌握keil软件和STC-ISP 软件的使用方法 2.点亮第一个发光管. 3.点亮1,3,5,7发光管 4.尝试让第一个发光管闪烁. 2. 主要仪器设备 1.一台pc机 2.一个单片机开发板 点亮第一个发光管. #include void main () { P1 &=0xFE; while(1) } 点亮1,3,5,7发光管 void main () { P1 &=0xAA;

while(1) } 尝试让第一个发光管闪烁. #include #define uint unsigned int #define uchar unsigned char void delay_ms(uint timer) { uchar j = 0; while(timer--) { for(j = 124;j>0;j--) { ; } } } void main (void) { while(1) { P1 &=0xFE; delay_ms(100); P1 |=0x01; delay_ms(100); } }

实验心得:这第一次试验,没准备,所以这次实验一上机啥都不会,也不知道该做啥,在同学的帮助下安装了程序和驱动,代码也是问同学才明白的。第一个代码,通过很顺利,但是测试第二个代码的时候电脑无法连接板子,后来重新安装了驱动才就能连接了。虽然感觉还是好多不懂的,不过还是学到了一些东西,有一点成就感。

定时器实验报告

定时器实验报告 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

电子信息工程学系实验报告课程名称:单片机原理及接口应用 实验项目名称:51定时器实验 实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。 MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP)

2 、51单片机的相关寄存器设置 方式控制寄存器TMOD: D7D6D5D4D3D2D1D0 GATE C/T M1 M0GATE C/T M1M0 TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。 TMOD各位的含义如下: 1. 工作方式选择位M1、M0 M1、M0的状态决定定时器的工作方式: M1M0功能说明 0 0 1 10 1 1 方式0,为13位的定时/计数器 方式1,为16位的定时/计数器 方式2,为常数自动重装入的8位定时/计数器 方式3,T0分为两个8位定时/计数器, T1在该方式时停止 3、51单片机定时器的工作过程(逻辑)方式一方式1:当M1M0=01时,定时器工作于方式1。

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.doczj.com/doc/e91777514.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.doczj.com/doc/e91777514.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

实验三++555定时器的应用仿真实验

电子技术仿真实验报告实验题目: 3 555定时器的应用仿真实验 班级: 姓名: 学号: 实验日期: 实验成绩:

实验三 555定时器的应用仿真实验 一、实验目的: 1、熟悉555定时器的工作原理。 2、掌握555定时器的典型应用。 3、掌握基于multisim 10.0的555定时器应用仿真。 二、实验原理: 555定时器是一种常见的集数字与模拟功能于一体的集成电路。通常只要外接少量的外围元件就可以很方便地构成施密特触发器、单稳态触发器和多谐振荡器等多种电路。其中: (1) 构成施密特触发器,用于TTL 系统的接口,整形电路或脉冲鉴幅等; (2)构成多谐振荡器,组成信号产生电路; (3)构成单稳态触发器,用于定时延时整形及一些定时开关中。 555应用电路采用这3种方式中的1种或多种组合起来可以组成各种实用的电子电路。 U1 LM555CM GND 1DIS 7OUT 3 RST 4VCC 8THR 6CON 5 TRI 2 GND ——1脚,接地;TRI ——2脚,触发输入;OUT ——3脚,输出;RES ——4脚,复 位(低电平有效);CON ——5脚,控制电压(不用时一般通过一个0.01F 的电容接地);THR ——6脚,阈值输入;DIS ——7脚,放电端;VCC ——8脚,+电源

1、 由555定时器构成多谐振荡器 (1) 接通电源时,设电容的初始电压0=c V ,此时TR V \TH V 均小于1/3Vcc ,放电截止, 输出端电压为高电平,Vcc 通过1R 和2R 对C 充电,Vc 按照指数规律逐步上升。 (2) 当Vc 上升到2/3Vcc 时,放电管导通,输出端电压为低电平,电容C 通过2R 放电,Vc 按照指数规律逐步下降。 (3) 当Vc 下降到1/3Vcc 时,放电管截止,输出端电压由低电平翻转为高电平,电容C 又开始充电。当电容C 充到Vc=2/3Vcc 时,又开始放电,如此周而复始,在输出端即可产生矩形波信号。 矩形波信号的周期取决于电容器充、放电回路的时间常数,输出矩形脉冲信号的周期 C R R T )2(7.021+≈ 2、 施密特触发器是脉冲波形整形和变换电路中经常使用的一种电路。其具有两个稳定 状态,两个稳定状态的维持和相互转换取决于输入电压的高低和,属于电平触发,具有两个不同的触发电平,存在回差电压。由555定时器构成的施密特触发器将555定时器的THR 和TRI 两个输入端连在一起作为信号输入端即可得到施密特触发器。 (1) 当Vi<1/3Vcc 时,输出Vo 为高电平。随着Vi 的上升,只要Vi<2/3Vcc ,输出 信号将维持原状态不变,设此状态为第一稳定状态。 (2) 当Vi 上升到Vi ≥2/3Vcc 时,输出Vo 为低电平。电路由第一稳定状态翻转为第 二稳定状态,电路的正向阈值电压为+T V =2/3Vcc 。随着Vi 上升后又下降的情况,只要Vi 〉1/3Vcc ,电路将维持在第二稳定状态不变。 (3) 当Vi 下降到Vi ≤1/3Vcc 时,电路又翻转到第一稳态,电路的负向阈值电压为 -T V =1/3Vcc 。 三、实验内容: 1、555定时器构成多谐振荡器仿真实验

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 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则执行,这是查询方式按下去后是低,否则为高

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

51单片机数字电压表实验报告

微控制器技术创新设计实验报告 姓名:学号:班级: 一、项目背景 使用单片机AT89C52和ADC0808设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为 5V;显示精度伏。 二、项目整体方案设计 ADC0808 是含8 位A/D 转换器、8 路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。ADC0808的精度为 1/2LSB。在AD 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关树组的256 电阻分压器,以及一个逐次通近型寄存器。8 路的模拟开关的通断由地址锁存器和译码器控制,可以在8 个通道中任意访问一个单边的模拟信号。

三、硬件设计 四、软件设计#include<> #include""

#define uchar unsigned char #define uint unsigned int sbit OE = P2^7; sbit EOC=P2^6; sbit START=P2^5; sbit CLK=P2^4; sbit CS0=P2^0; sbit CS1=P2^1; sbit CS2=P2^2; sbit CS3=P2^3; uint adval,volt; uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void delayms(uint ms) {

数字电路实验报告555定时器及应用

姓名:xxxxxxxxxxxxxxx学号:xxxxxxxxxx . 学院:计算机与电子信息学院专业:计算机类. 班级:xxxxxxxxxxxxxxxxxx时间:2019年10月18 日. 指导教师:xxxxxxxx . 实验名称:555定时器及应用. 一、实验目的 1、熟悉掌握555定时器的基本工作原理及功能; 2、掌握555定时器构成多谐震荡器的工作原理和使用方法; 3、熟悉数字系统的分析和应用。 二、实验原理 1、555定时器原理简介 555定时器是共仪器、仪表、自动化装置、各种民用电器的定时器、时间延时器等电子控制电路用的时间功能电路,也可以做自激多谐振荡器、脉冲调制电路、脉冲相位调谐电路、脉冲丢失指示器、报警器以及单稳态、双稳态等各种电路,应用范围十分广泛。 (1)555定时器的特点 ①外部连接几个阻容元件,可以方便的构成施密特触发器、多谐振荡器和单稳态 触发器等脉冲产生与整形回路。 ②具有一定的输出功率,因此可直接驱动微电机、指示灯和扬声器等。该器件有 双极型和COMS型两类产品,双极型产品型号最后三位为555,COMS型产品 型号最后四位为7555,它们的功能及外部引线排列完全相同。 ③电源电压范围宽(3~18V),双极型的电源电压为5~15V,COMS型的电源电 压为3~18V,能够提供与TTL及COMS型的数字电路兼容的逻辑电平。 (2)555定时器的电路结构及功能 图6-1是555定时器的电路结构图和管脚排列图,它的八个引脚的名称及作用如下: 1脚:芯片的地端2脚:芯片的触发输入端TR’(也叫低触发端)3脚:芯片的输出端4脚:芯片的复位端RD’ 5脚:芯片的控制电压输入Vco 6脚:芯片的阈值输入端TH(也叫高触发端)7脚:芯片的放电端DISC 8脚:芯片的电源Vcc

单片机实验报告

单片机实验报告 班级:信科09-3 姓名:王艳辉 学号:08093581 指导老师:陈岱 完成时间:2012年1月8日

实验一 I/O接口P1、P3口实验 一,实验题目 1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。 2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 二,实验目的 1.熟悉使用CPLD实验箱进行单片机实验的方法。 2.设计出符合实验要求的CPLD硬件电路。 3.学习单片机仿真开发软件Keil 51的使用方法。 4.学习MCS-51汇编语言编程方法。 5.学习Pl口的使用方法。 6.学习延时子程序的编写和使用。 三,实验准备 P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。再来看一下延时程序的实现。现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。根据实验系统的工作主频,计算出延时0.1s的

时间常量,编制延时程序: MOV R7, #200 (1) DEl:MOy R6,#X (2) DE2:DJNZ R6,DE2 (3) DJNZ R7,DEl (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值: (X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。解出X=l26。代入上式可知实际延时约0.100O04s,近似符合要求。 四,实验步骤 (1)打开MAX+PLUSⅡ CPLD实验开发系统。 (2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。出现图形编辑窗口。 (4)双击空白编辑区,出现Enter Symbol 对话框。 (5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。 (6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

555定时器多谐波电路Multisim仿真

数字电子技术仿真实验报告 实验名称:555定时器 学生姓名:刘佳璇学号:20152523 指导教师:金丹 院系:电气工程学院班级:201502D 2017 年11 月29 日

555定时器 一、实验目的 1、学会使用 MULTISIM 软件进行数字电子实验仿真。 2、学习了解555定时器的工作原理。 二、实验内容 多谐振荡器 三、实验原理 555定时器的内部电路图及引脚排列见下图,功能表见下表。

555定时器的功能主要由两个比较器决定。两个比较器的输出电压控制RS 触发器和放电管的状态。在电源与地之间加上电压,当5脚悬空时,则电压比较器C1的同相输入端的电压为3/2CC V ,C2的反相输入端的电压为VCC 若触发输入端TR 的电压小于3/CC V ,则比较器C2的输出0,可使RS 触发器置1,使输出端OUT=1。如果阈值输入端TH 的电压大于3/2CC V ,同时TR 端的电压大于3/CC V ,则C1的输出为0,C2的输出为1,可将RS 触发器置0,使输出为0电平。

多谐振荡器又称为无稳态触发器,它没有稳定的输出状态,只有两个暂稳态。在电路处于某一暂稳态后,经过一段时间可以自行触发翻转到另一暂稳态。 两个暂稳态自行相互转换而输出一系列矩形波。多谐振荡器可用作方波发生器。电路如图。 四、 实验设计与仿真 构建仿真电路如图所示,其中Ω=k R 21,Ω=k R 12,F C μ1.0=。接通V 5电源,用示波器观察c u 和o u 的波形。

波形如下图: 仿真结果与实验结果一致。 五、实验小结

这次的仿真实验是 555 定时器(多谐振荡器)电路,实验连线较简单,但是原理并不简单,通过实验我更加深刻的理解了555定时器的工作原理。

单片机实验报告

单片机实验报告 实验一:存储器块清零或赋值 一、实验目的 1 熟悉存储器的读写方法,熟悉51汇编语言结构。 2 熟悉循环结构程序的编写。 3 熟悉编程环境和程序的调试。 二、实验内容 指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的10个字节内容清零或全部赋值为33H。 注意: 1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。 2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容 3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR 4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。 5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。 三、实验仪器 微机、VW,WA VE6000编程环境软件,(单片机实验箱) Lab6000/Lab6000通用微控制器MCS51实验 四、实验步骤 1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)

2、编写程序。 3、运行和调试过程。 外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH): 单步执行程序,观察SFR中外部地址指针的变化; 全速执行程序,可以看到外部数据存储器已赋值33H:

五、实验结果 可以看到外部数据存储器已赋值33H: 六、问题讨论 本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。同时,学习掌握汇编程序的编写和调试过程。 实验二:存储块移动 一、实验目的 1 熟悉51汇编语言程序结构。 2 熟悉循环结构程序的编写,进一步熟悉指令系统。 3 熟悉编程环境和程序的调试。 二、实验内容 将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。 注意:在编程环境中,可以通过软件仿真,观察程单片机运行情况。 由于源地址和目的地址的内容都一样(FF),调试时看不到内容的变化,所以需要给源地址内容赋值。有多种赋值方式(比如在搬移循环体内,赋值一个搬移一个,请在空白处添

C51单片机实验报告

实验报告册 课程名称:单片机原理与应用B 指导老师:xxx 班级:xxx 姓名:xxx 学号:xxx 学期:20 —20 学年第学期南京农业大学工学院教务处印

实验目录实验一:指示灯/开关控制器 实验二:指示灯循环控制 实验三:指示灯/数码管的中断控制 实验四:电子秒表显示器 实验五:双机通信

姓名:学号:班级:成绩: 实验名称:指示灯/开关控制器 一、实验目的: 学习51单片机I/O口基本输入/输出功能,掌握C语言的编程与调试方法。 二、实验原理: 实验电路原理图如图所示,图中输入电路由外接在P1口的8只拨动开关组成;输入电路由外接在P2口的8只低电平驱动的发光二极管组成。此外,还包括时钟电路、复位电路和片选电路。 在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的亮灯状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。 三、软件编程原理为; (1)8只发光二极管整体闪烁3次

亮灯:向P2口送入数值0; 灭灯:向P2口送入数值0FFH; 闪烁3次:循环3次; 闪烁快慢:由软件延时时间决定。 (2)根据开关状态控制灯亮或灯灭 开关控制灯:将P1口(即开关状态)内容送入P2口;无限持续:无条件循环。 四、实验结果图: 灯泡闪烁:

按下按键1、3、5、7:

经检验,其余按键按下时亦符合题目要求。 五、实验程序: #include"reg51.h" void delay(unsigned char time) { unsigned int j=15000; for(;time>0;time--) for(;j>0;j--); } void main(){ key,char i; for(i=0;i<3;i++) { P2=0x00; delay(500); P2=0xff; delay(500) } while(1) { P2=P3;

555定时器实验报告

一、实验目的 二、实验原理 555 定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。555 定时器的内部电路框图和外引脚排列图分别如图 2.9.1 和图2.9.2 所示。它内部包括两个电压比较器,三个等值串联电阻,一个 RS 触发器,一个放电管T 及功率输出级。它提供两个基准电压VCC /3 和 2VCC /3 555 定时器的功能主要由两个比较器决定。两个比较器的输出电压控制RS 触发器和放电管的状态。在电源与地之间加上电压,当 5 脚悬空时,则电压比较器 C1 的同相输入端的电压为2VCC /3,C2 的反相输入端的电压为VCC /3。若触发输入端 TR 的电压小于VCC /3,则比较器 C2 的输出为0,可使RS 触发器置1,使输出端OUT=1。如果阈值输入端 TH 的电压大于2VCC/3,同时 TR 端的电压大于VCC /3,则C1 的输出为 0,C2 的输出为1,可将RS 触发器置 0,使输出为 0 电平。 它的各个引脚功能如下: 1脚:外接电源负端VSS或接地,一般情况下接地。

8脚:外接电源VCC,双极型时基电路VCC的范围是4.5 ~ 16V,CMOS 型时基电路VCC的范围为3 ~ 18V。一般用5V。 3脚:输出端Vo 2脚:低触发端 6脚:TH高触发端 4脚:是直接清零端。当端接低电平,则时基电路不工作,此时不论、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。 5脚:VC为控制电压端。若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只0.01μF电容接地,以防引入干扰。 7脚:放电端。该端与放电管集电极相连,用做定时器时电容的放电。 在1脚接地,5脚未外接电压,两个比较器A1、A2基准电压分别为的情况下,555时基电路的功能表如表6—1示。 三、实验内容 四、思考题

单片机实验报告

单片机实验报告 学院:姓名:学号:指导老师:

目录 第一章实验内容、目的及要求 (2) 一、内容 (2) 二、目的及要求 (3) 第二章实验 (3) 实验一数字量输入输出实验 (3) 实验二定时器/计数器实验 (4) 实验三A/D、D/A转换实验 (11) 实验四串行通信设计 (20) 第三章实验体会 (28)

第一章实验内容、目的及要求 一、内容 实验一数字量输入输出实验 阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。 实验二定时器/计数器实验 阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。 提高部分:定时器控制LED灯 由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。编写程序模拟时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。 实验三A/D、D/A转换实验 阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。 提高部分:(要求:Proteus环境下完成) 小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。 实验四串行通讯实验 阅读、调试C语言程序功能。使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成) 利用单片机实验系统,实现与PC机通讯。功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

单片机定时器实验报告

XXXX大学信息工程与自动化学院学生实验报告 (2009 —2010 学年第二学期) 课程名称:单片机开课实验室: 2010年 5月14日 一.实验目的: 掌握定时器T0、T1的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 二.实验原理: MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。T1还可以作为其串行口的波特率发生器。 定时器T0由特殊功能寄存器TL0和TH0构成,定时器T1由TH1和TL1构成,特殊功能寄存器TMOD控制定时器的工作方式,TCON控制其运行。定时器的中断由中断允许寄存器IE,中断优先权寄存器IP中的相应位进行控制。定时器T0的中断入口地址为000BH,T1的中断入口地址为001BH。 定时器的编程包括: 1)置工作方式。 2)置计数初值。 3)中断设置。 4)启动定时器。 定时器/计数器由四种工作方式,所用的计数位数不同,因此,定时计数常数也就不同。

在编写中断服务程序时,应该清楚中断响应过程:CPU执行中断服务程序之前,自动将程序计数器PC内容(即断点地址)压入堆栈保护(但不保护状态寄存器PSW,更不保护累加器A和其它寄存器内容),然后将对应的中断矢量装入程序计数器PC使程序转向该中断矢量地址单元中以执行中断服务程序。定时器T0和T1对应的中断矢量地址分别为000BH 和001BH。 中断服务程序从矢量地址开始执行,一直到返回指令“RETI”为止。“RETI”指令的操作一方面告诉中断系统该中断服务程序已经执行完毕,另一方面把原来压入堆栈保护的断点地址从栈顶弹出,装入到程序计数器PC,使程序返回到被到中断的程序断点处,以便继续执行。 因此,我们在编写中断服务程序时注意。 1.在中断矢量地址单元放一条无条件转移指令,使中断服务程序可以灵活地安排在64K 字节程序存储器的任何空间。 2.在中断服务程序中应特别注意用软件保护现场,以免中断返回后,丢失原寄存器、累加器的信息。 3.若要使执行的当前中断程序禁止更高优先级中断,可以先用软件关闭CPU中断,或禁止某中断源中断,在返回前再开放中断。 三.实验内容: 编写并调试一个程序,用AT89C51的T0工作方式1产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1;秒计数到60时,自动从0开始。实验电路原理如图1所示。 计算初值公式 定时模式1 th0=(216-定时时间) /256 tl0=(216-定时时间) mod 256

51单片机实验报告

实验一数据传送实验 实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV @R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 思考题: 1. 按照实验内容补全程序。 2. CPU 对8031内部RAM存储器有哪些寻址方式? 直接寻址,立即寻址,寄存器寻址,寄存器间接寻址。 3. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH ___0A0H~0AFH______________________ 内部RAM 50H~5FH___0A0H~0AFH_______________________ 实验二多字节十进制加法实验

实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。源程序清单:ORG 0000H RESET: AJMP MAIN ORG 0100H MAIN: MOV SP, #60H MOV R0, #31H MOV @R0, #22H DEC R0 MOV @R0, #33H MOV R1, #21H MOV @R1, #44H DEC R1 MOV @R1, #55H MOV R2, #02H ACALL DACN HERE: AJMP HERE DACN: CLR C DAL: MOV A, @R0 ADDC A, @R1 DA A MOV @R1, A INC R0 INC R1 DJNZ R2,DAL CLR A MOV ACC.0 , C RET 思考题: 1. 按照实验内容补全程序。 2. 加数单元、被加数单元和结果单元的地址和内容为? 3130H,2120H,6688H 3. 如何检查双字节相加的最高位溢出? 看psw.3 的溢出标志位ov=1 则溢出 4. 改变加数和被加数,测试程序的执行结果。 实验三数据排序实验

相关主题
文本预览
相关文档 最新文档