第三章 实验说明
软件实验一:汇编编程
1、学生实验:分别编程实现两个16位无符号数相加,结果存放在40H41H中;两个16位的无符号数相减,结果存放在30H31H中。 2、学生实验:编程实现 X (X≥40) Y= 2X (20 0 (X≤20) 3、学生实验:编写80个数相加,结果存放在30H31H中。 软件实验二:汇编编程 1、学生实验:编写R1×R2R3=R4R5R6,R1R2×R3R4=R4R5R6R7。 2、学生实验:找出内RAM中从30H到50H中在最小值。 3、学生实验:用查表方式编写y=x3(x为0~9的整数),要求分别用@A+DPTR和@A+PC的方法。 软件实验三:C语言编程 1、用查表方式编写y=x13+x23+x33。(x为0~9的整数) 2、 有10个8位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的数据(1的个数为偶数) 都要存到内RAM50H开始的数据区中。试编写有关程序。有10个8位带符号二进制数,请将10个数按从小到大的顺序排列,并存到内RAM50H开始的单元中。 14 硬件实验一 P1口输入、输出实验 一、 实验要求 1、基本部分: (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 (2)P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。 2、扩展部分: (1) 利用P1口控制发光二极管LED灯按照下面方式工作: a) LED灯从左到右依次点亮; b) LED灯从右到左依次点亮; c) 按照以上步骤重复运行,其中要求灯亮的时间为500ms。 (2) 利用P1口控制发光二极管LED灯按照下面方式工作: a)从左到右奇数LED灯依次点亮; b)从右到左偶数LED灯依次点亮; c)按照以上步骤重复运行,其中要求灯亮的时间为500ms。 二、实验目的 1. 学习P1口的使用方法。 2. 学习延时子程序的编写和使用。 三、实验电路及连线 JP8(P1)和JP1(LED)用8PIN排线或连接起来。 使用杜邦线将P1.2,P1.3和独立按键连接起来。 四、实验说明 a) P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用 为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。 b) 8051延时子程序的延时计算问题,对于程序 Delay: MOV R6,#0H MOV R7, #0H DelayLoop: DJNZ R6,DelayLoop DJNZ R7,DelayLoop RET 查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为: (256×255+2)×2×12÷6 ≈ 261ms 15 硬件实验二 外部中断实验 一、实验目的 1、学习外部中断技术的基本使用方法。 2、学习中断处理程序的编程方法。 二、实验内容 1、基本部分: 通过按键申请中断,在中断处理程序中对输出信号进行反转。 2、扩展部分: 将外部中断源连接到单片机的外部中断1上,计算其外部中断1的中断次数(<255),并能实时将结果显示在发光二极管LED上(二进制形式)。 三、实验连线 用杜邦线将JP5.8(第一个独立按键引脚)和单片机的INT0(P32)端连接。 用8PIN排线将JP8(P1)和JP1(LED)或连接起来。 四、实验说明 中断服务程序的关键是: 1、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2、必须在中断程序中设定是否允许中断重入,即设置EXO位。 本例中使用了INT0中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的中断程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。 16 硬件实验三 双色LED点阵实验 一、实验目的 1、学习双色LED点阵显示的原理。 2、学习双色LED点阵显示的编程方法。 二、实验内容 1、基本部分: 固定显示。在点阵上轮流显示数据0-9和字母A-F。 2、扩展部分: 滚动显示。从左到右,从右到左,从上到下,从下到上,轮流显示“1”和“一”。 五、实验连线 P0和JP1(LED)用8PIN排线或连接起来。 P1和J19(点阵绿色端)用8PIN排线或连接起来。 P3和J20(点阵红色端)用8PIN排线或连接起来。 六、实验说明 应元素写到点阵的数据引脚。 首先要把需要显示的数字或字母所对应的二进制码存放到数组中,然后轮流将各个列引脚置低,并将对 17 硬件实验四 定时器实验 一、实验目的 1、学习51单片机内部定时计数器的使用和编程方法。 2、进一步掌握中断处理程序的编程方法。 二、实验内容 1、基本部分: 用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转. 2、扩展部分: 利用P1口控制发光二极管LED灯按照下面方式工作: 1)从左到右奇数LED灯依次点亮; 2)从右到左偶数LED灯依次点亮; 3)按照以上步骤重复运行,其中要求灯亮的时间为1s,由定时器T1实现。 三、实验连线 JP8(P1)和JP1(LED)用8PIN排线或连接起来。 四、实验说明 1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器。 2、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 3、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHZ,每个机器周期的时间是1us,最长的定时间隔为1us*216=65536us=65.536ms。所以需要多次定时才能达到1s的定时间隔。 4、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 18