试程序:下载运行程序,观察发光二极管点亮移位情况,如果现象不对继续修改程序。七、实验报告要求1、写出实验完成后的完整程序及必要的文字说明,画出实验电路图。2、描述实验程序运行结果。3、完成思考题:若采用计数器延时,试编写程序实现,可分别用汇编和C51语言。实验二P3.3口输入,P1 口输出一、实验目的1、进一步熟悉汇编语言编程思路和程序调试方法。2、学习P1、P3I/O口使用。二、实验内容1、P3口做输入口,外接一开关作为脉冲信号源,每输入一个脉冲,PI口按十六进制加一。2、P1口做输出口,编写程序,使P1口接的8个发光二极管L1一L8按16进制加一方式点亮发光二极管。三、实验说明1、P3口是准双向口它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P3口用作输入口时,必须先对口的锁存器写“1",若不先对它写1",读入的数据是不正确的。2、参考例子①读取P3口输入开关状态输出到P1口通过外接的LED灯显示汇编语言参考程序:C语言参考程序:#include<reg51.h>ORGO00OhMOVFP3,#OFFHvoid mainO:P3口初始化MOVACC, P3{P3=0xff;:将P3口数据读入累加器ACC中//P3口初始化MOVFP1,ACCP1=P3;:将将ACC中数据送入P1口输出//P3口输入送P1口输出1END②查询方式判断开关状态,关时L1灯灭,开时L1灯亮汇编语言参考程序C语言参考程序ORGO00Oh#include<reg51.h>MOVP3,#OFFHsbit p3_3=P3~3;;P3口初始化//位变量定义sbit p1_0=P1~0;test:JNB P3.3,open:判位跳转指今SETBP1.0;置1指令void mainAJMPtest[P3=0xff::无条件跳转指令while(1)open:CLRP1.0:清0指令[if(p3_3==1)AJMPtestp1_0=1;ENDp1_0=0;1else1四、程序参考流程-I
1 试程序;下载运行程序,观察发光二极管点亮移位情况,如果现象不对继续修改程序。 七、实验报告要求 1、写出实验完成后的完整程序及必要的文字说明,画出实验电路图。 2、描述实验程序运行结果。 3、完成思考题:若采用计数器延时,试编写程序实现,可分别用汇编和 C51 语言。 实验二 P3.3 口输入,P1 口输出 一、实验目的 1、进一步熟悉汇编语言编程思路和程序调试方法。 2、学习 P1、P3 I/O 口使用。 二、实验内容 1、P3 口做输入口,外接一开关作为脉冲信号源,每输入一个脉冲,P1 口按十六进制加一。 2、P1 口做输出口,编写程序,使 P1 口接的 8 个发光二极管 L1—L8 按 16 进制加一方式点 亮发光二极管。 三、实验说明 1、P3 口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当 P3 口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。 2、参考例子 ① 读取 P3 口输入开关状态输出到 P1 口通过外接的 LED 灯显示. 汇编语言参考程序: ORG 0000h MOV P3,#0FFH ;P3 口初始化 MOV ACC,P3 ;将 P3 口数据读入累加器 ACC 中 MOV P1,ACC ;将将 ACC 中数据送入 P1 口输出 END C 语言参考程序: #include <reg51.h> void main() { P3=0xff; //P3 口初始化 P1=P3; // P3 口输入送 P1 口输出 } ② 查询方式判断开关状态,关时 L1 灯灭,开时 L1 灯亮 汇编语言参考程序 ORG 0000h MOV P3,#0FFH ;P3 口初始化 test:JNB P3.3,open ;判位跳转指令 SETB P1.0 ;置 1 指令 AJMP test ;无条件跳转指令 open:CLR P1.0 ;清 0 指令 AJMP test END C 语言参考程序 #include<reg51.h> sbit p3_3=P3^3; //位变量定义 sbit p1_0=P1^0; void main() { P3=0xff; while(1) { if(p3_3==1) p1_0=1; else p1_0=0; } } 四、程序参考流程
延时子程序主程序:R6设初值FPH开始小+P3.3为高吗?R7设初值FFHIH延时R7-1=D否?++YP3.3直的高吗?R6-1=0否?+YP3.3为长吗?返回IN正时+A+1送P1口-循环+五、实验线路图L1U1U17JR1P1.012L1181A1IY1P1.14161A21Y2P12136141A31Y3P1314812LA1A41Y4P1.4L5 11n2A12Y18031P1.L6132A22Y2P1.67132A32Y3P1.L8172A42Y4P3.310192074LS244K1VCCGND220六、实验步骤1、实验连线用导线把P3.3连至K1,P1.0-P1.7连至L1-L8。2、编程调试:在PC机上打开实验软件(MCS51单片机开发系统),用汇编语言编写并调试程序:下载运行程序,用连续方式运行程序。3、观豪运行结果在连续运行状态下,开关K1每拨动一次,L1-L8发光二极管按16进制方式加一点亮。七、实验报告要求1、写出实验完成后的完整程序及必要的文字说明,画出实验电路图。2、描述实验程序运行结果。3、完成思考题:若采用中断方式判断开关状态,试编写程序实现。2
2 五、实验线路图 六、实验步骤 1、实验连线 用导线把 P3.3 连至 K1,P1.0-P1.7 连至 L1-L8。 2、编程调试:在 PC 机上打开实验软件(MCS51 单片机开发系统),用汇编语言编写并调试 程序;下载运行程序,用连续方式运行程序。 3、观察运行结果 在连续运行状态下,开关 K1 每拨动一次,L1-L8 发光二极管按 16 进制方式加一点亮。 七、实验报告要求 1、写出实验完成后的完整程序及必要的文字说明,画出实验电路图。 2、描述实验程序运行结果。 3、完成思考题:若采用中断方式判断开关状态,试编写程序实现
实验三中断应用实验一一工业顺序控制一、实验目的1、掌握中断程序的编写方法。2、了解工业顺序控制相关概念及操作方法。3、学习单片机控制喇叭等发声器件的原理及实现方法。4、学习利用C51编写程序的技巧及方法。二、实验内容P1.0~P1.6控制注塑机的七道工序,实现模拟控制七只发光二极管点亮,低电平有效。设定每道工序时间转换为1秒,P3.4为开工启动开关,高电平启动。P3.3(外部中断1输入口)为故障输入信号,低电平报警。P1.7为报警声音输出端,产生频率范围在20~2MH之间的方波信号,经功率放大器(LM386)放大后,驱动喇叭发出报警声。设定前6道工序只有一位输出,第七道工序有三位(LED6、7、8)输出。编程实现:1、打开开工开关后,七道工序循环动作:2、有中断信号输入时,立即停止工序动作(即:所有灯熄灭)并发出报警:3、中断去除后,工序恢复到中断来时刻的工序动作。三、程序参考流程主程序中断子程序开始+中断、P1、P3口初始化关输出等开工NHY报警工序1,延时2V判断故障清除?工序2,延时YT返回.....工序7,延时四、编程提示1、工业顺序控制概念:在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制。倒注塑机工艺过程大致按“合模→注射→延时一→开模→产伸一→产退”顺序动作,用单片机最易实现。2、单片机中断系统是为使CPU具有对外界事件进行处理能力而设置的。当CPU正在处理某事件时外界发生紧急事件请求,CPU暂停当前工作,转而去处理这个紧急事件。处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。能够实现中断功能的事件为中断系统,向CPU发出中断请求称为中断源。MCS-51单片机的中断系统提供了5个中断源,具有3
3 实验三 中断应用实验——工业顺序控制 一、实验目的 1、掌握中断程序的编写方法。 2、了解工业顺序控制相关概念及操作方法。 3、学习单片机控制喇叭等发声器件的原理及实现方法。 4、学习利用 C51 编写程序的技巧及方法。 二、实验内容 P1.0~P1.6 控制注塑机的七道工序,实现模拟控制七只发光二极管点亮,低电平有效。设 定每道工序时间转换为 1 秒,P3.4 为开工启动开关,高电平启动。P3.3(外部中断 1 输入口) 为故障输入信号,低电平报警。P1.7 为报警声音输出端,产生频率范围在 20~2MHZ 之间的方波 信号,经功率放大器(LM386)放大后,驱动喇叭发出报警声。设定前 6 道工序只有一位输出, 第七道工序有三位(LED6、7、8)输出。 编程实现:1、打开开工开关后,七道工序循环动作;2、有中断信号输入时,立即停止工序 动作(即:所有灯熄灭)并发出报警; 3、中断去除后,工序恢复到中断来时刻的工序动作。 三、程序参考流程 四、编程提示 1、工业顺序控制概念:在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些 继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制。 倒注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实 现。 2、单片机中断系统是为使 CPU 具有对外界事件进行处理能力而设置的。当 CPU 正在处理某 事件时外界发生紧急事件请求,CPU 暂停当前工作,转而去处理这个紧急事件。处理完以后,再 回到原来被中断的地方,继续原来的工作,这样的过程称为中断。能够实现中断功能的事件为中 断系统,向 CPU 发出中断请求称为中断源。MCS-51 单片机的中断系统提供了 5 个中断源,具有
两个中断优先级,可实现两极中断服务程序嵌套。通过关中断或开中断来控制中断源的状态。3、中断相关寄存器及其设置:1)中断屏蔽:CPU可以对中断源开放或屏蔽,每一个中断源是否允许中断,是由内部中断允许寄存器IE的相应位控制。该位为1允许中断,为0禁止中断,其格式如下:EA//ESET1EX1ETOEXOcpu中断开放标志串口中断T1 定时外部中断1TO定时外部中断0例句:如要使CPU可以对所有中断源开放:EA=1;2)中断优先级:MCS-51有两个中断优先级,对于每一个中断源均可编程为高优先级或低优先级,可以实现二级中断嵌套。中断优先级响应的原则:低级可被高级中断,反之不能:任何一种中断,二日被CPU响应,不能被同级中断源所中断。中断优先级寄存器IP的格式如下:“1”为高级优先,“0”为低级优先。/PSPT1PX1PTOPXO/串口中断定时器T1外部中断1定时器TO/外部中断0(寄存器地址IE:OA8HIP:OB8H)福3)中断触发方式选择:单片机触发方式有电平触发和边沿触发两种。本实验中外部中断信号接开关,所以应设为电平触发。编程时需要设置定时器控制寄存器TCON中与中断有关的位为“1”,外部中断0对应:ITO:外部中断1对应:IT1(例句:ITO=0:设置外部中断0为电平触发)4)中断源入口地址:MCS-51中断系统5个中断源入口地址分别为:中断源入口地址中断号0外部中断00003H1定时器TO00OBH2外部中断10013H3001BH定时器T14串行口0023H4、电子控制系统常见的报警方式有:指示灯或数码管显示报警:采用声、光以及语音进行报警:具有控制功能的报警等。利用单片机系统进行报警的策略是把采集到的数据送到单片机进行处理,与该参数的上、下限给定值进行比较,若超过给定值时则进行报警:否则,就作为正常值进行显示或控制。本实验中用喇叭发出声音报警,报警声音的产生方法:编写程序使P1.7口输出方波脉冲信号,其频率范围在20~2MHz(即人耳能够听到的音频范围).将该信号用导线引至音频放大电路输入端,再接至喇叭,即可发出声音。5、参考例子[C语言参考程序]4
4 两个中断优先级,可实现两极中断服务程序嵌套。通过关中断或开中断来控制中断源的状态。 3、中断相关寄存器及其设置: 1)中断屏蔽:CPU 可以对中断源开放或屏蔽,每一个中断源是否允许中断,是由内部中 断允许寄存器 IE 的相应位控制。该位为 1 允许中断,为 0 禁止中断,其格式如下: EA / / ES ET1 EX1 ET0 EX0 cpu 中断开放标志 串口中断 T1 定时 外部中断 1 T0 定时 外部中断 0 例句:如要使 CPU 可以对所有中断源开放: EA=1; 2)中断优先级:MCS-51 有两个中断优先级,对于每一个中断源均可编程为高优先级或低 优先级,可以实现二级中断嵌套。中断优先级响应的原则:低级可被高级中断,反之不能;任何 一种中断,一旦被 CPU 响应,不能被同级中断源所中断。 中断优先级寄存器 IP 的格式如下:“1”为高级优先,“0”为低级优先。 / / / PS PT1 PX1 PT0 PX0 串口中断 定时器 T1 外部中断 1 定时器 T0 外部中断 0 (寄存器地址 IE:0A8H IP:0B8H) 3)中断触发方式选择:单片机触发方式有电平触发和边沿触发两种。本实验中外部中断 信号接开关,所以应设为电平触发。编程时需要设置定时器控制寄存器 TCON 中与中断有关的位 为“1”,外部中断 0 对应:IT0;外部中断 1 对应:IT1 (例句: IT0=0 ;设置外部中断 0 为电平触发) 4)中断源入口地址:MCS-51 中断系统 5 个中断源入口地址分别为: 中断源 入口地址 中断号 外部中断 0 0003H 0 定时器 T0 000BH 1 外部中断 1 0013H 2 定时器 T1 001BH 3 串行口 0023H 4 4、电子控制系统常见的报警方式有:指示灯或数码管显示报警;采用声、光以及语音进行 报警;具有控制功能的报警等。利用单片机系统进行报警的策略是把采集到的数据送到单片机进 行处理,与该参数的上、下限给定值进行比较,若超过给定值时则进行报警;否则,就作为正常 值进行显示或控制。 本实验中用喇叭发出声音报警,报警声音的产生方法:编写程序使 P1.7 口输出方波脉冲信 号,其频率范围在 20~2MHZ(即人耳能够听到的音频范围).将该信号用导线引至音频放大电路 输入端,再接至喇叭,即可发出声音。 5、参考例子[C 语言参考程序]