通信与接口实验报告,跑马灯,中断计数器等
跑马灯实验报告.
跑马灯实验报告姓名:班级:跑马灯实验报告试验目的1.学习8031内部计数器的使用和编程方法。
2.进一步掌握中断处理程序的编程方法。
3.学习端口的输入输出操作。
实验原理1、软件流程图:2.程序设计内容我们可以运用输出端口指令MOV P1,A 或MOV P1,#DATA ,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
3、硬件连接图:4.软件清单ADR EQU 8000HORG 0000HLJMP STARTORG 001BHLJMP OT1ORG 00F0HSTART:MOV TMOD,#10HMOV TL1,#0B0HMOV TH1,#3CHSETB EASETB ET1MOV R2,#14HMOV R3,#00HSETB TR1SJMP $OT1:CLR TR1CLR EAMOV TH1,#3CHMOV TL1,#0B0HDJNZ R2,BACKNEXT:MOV R2,#14HMOV DPTR,#0200hMOV A,R3MOVC A,@A+DPTRMOV DPTR,#ADRMOVX @DPTR,AINC R3CJNE R3,#08H,BACKSJMP ROUNDBACK:SETB EASETB TR1RETIROUND:MOV R3,#00HSJMP BACKORG 0200HDB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H END5.C语言源程序#include <AT89X51.H>unsigned char i;unsigned char temp;unsigned char a,b;void delay(void){unsigned char m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}void main(void){while(1){temp=0xfe;P1=temp;delay();for(i=1;i<8;i++){a=temp<<i;b=temp>>(8-i);P1=a|b;delay();}for(i=1;i<8;i++){a=temp>>i;b=temp<<(8-i);P1=a|b;delay();}}}功能说明由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。
通信与接口实验报告-跑马灯-中断计数器等
实验报告||实验名称接口与通信实验课程名称接口与通信||班级:网络0802 姓名:王东学号:2008098030215 成绩:指导老师:庞春江老师实验日期:实验十存储器扩展实验一、实验目的(1)了解62256SRAM特性,掌握PC内存扩展方法和存储器的读写操作。
(2)了解8086/8088与存储器的连接,领会总线及总线标准的意义。
二、实验内容1.实验原理(62256RAM介绍)62256是32k*8的静态存储器,管脚如图所示。
其中:A0~A14为地址线,DB0~DB7为数据线,/cs为存储器的片选,/OE为存储器数据输出选通信号,/WE为数据写入存储器信号。
62256工作方式如下图。
/CS /WE /OE 方式DB-~DB7H X X 未选中高阻L H H 读写禁止高阻L L H 写INL H L 读OUT2.实验内容设计扩展存储电器的硬件连接图并编制程序,讲字符A~Z循环存入62256扩展RAM 中,让后再检查扩展存储器中的内容。
三、程序设计编写升序,将4KB扩展存储器交替写入11H和0AAH。
程序如下:RAMADDR EQU 0000HRAMOFF EQU 9000HCOUNT EQU 800HCODE SEGMENTASSUME CS:CODESTART: PROC NEARMOV AX,RAMADDRMOV DS,AXMOV BX,RAMOFFMOV CX,COUNTMOV DL,11hMOV AX ,0AAHREP: MOV [BX],DLINC BXMOV [BX],AXINC BXLOOP REPJMP $CODE ENDSEND START四、实验结果通过在软件上调试,运行时能够看到内存地址的改变,证明此扩展的程序成功实现了。
五、实验心得第一次使用W A VE6000进行实验,了解了内存如何扩展操作的过程,了解了62256SRAM 的特性,并且通过扩展存储器不同地址,深入体会/CS 的作用。
跑马灯实验报告
电子系统综合设计报告学号 201009120229 姓名李文海年级专业 2010级电子信息工程(二) 指导教师刘怀强学院理学院走马灯实验论文--《嵌入式系统技术》1、实验目的1、学会dp-51pro实验仪监控程序下载、动态调试等联机调试功能的使用;2、理解和学会单片机并口的作为通用i/o的使用;3、理解和学会单片机外部中断的使用;4、了解单片机定时器/计数器的应用。
2、实验设备z pc 机、arm 仿真器、2440 实验箱、串口线。
3、实验内容z 熟悉 arm 开发环境的建立。
z 使用 arm 汇编和 c 语言设置 gpio 口的相应寄存器。
z 编写跑马灯程序。
5、实验原理走马灯实验是一个硬件实验,因此要求使用dp-51pro 单片机综合仿真实验仪进行硬件仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。
然后连接仿真仪,下载监控程序,进行主机与实验箱联机仿真。
为了使单独编译的 c 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。
atpcs ,即 arm , thumb 过程调用标准(arm/thumb procedure callstandard),是 arm 程序和 thumb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。
下面结合实际介绍几种 atpcs 规则,如果读者想了解更多的规则,可以查看相关的书籍。
1.基本 atpcs 基本 atpcs 规定了在子程序调用时的一些基本规则,包括下面 3 方面的内容:(1)各寄存器的使用规则及其相应的名称。
(2)数据栈的使用规则。
(3)参数传递的规则。
相对于其它类型的 atpcs,满足基本 atpcs 的程序的执行速度更快,所占用的内存更少。
但是它不能提供以下的支持: arm 程序和 thumb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。
单片机跑马灯实训报告
4、彩灯仿真图,如图4-4所示。
图4-4彩灯仿真图
5、彩灯布局图,如图4-5所示。
图4-5彩灯布局图
五、焊接电路
按电路装配图,如图5-1。按顺序将元器件焊接到万能板上,并用导线对其进行连接,然后对其进行检测。
图5-1电路装配图
六、程序流程:
实现小灯随开关闭合亮的程流程图,如图6-1所示。
九、实训总结
通过这一周单片机实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,本次系统以AT89C52单片机为核心部件,利用汇编软件编程,通过usb送电和8个发光二极管显示实现了基本跑马灯功能,能实现本设计题目的基本要求和发挥部分。
在这次实训中既锻炼了我们的焊接能力同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
3.彩灯原理图…………………………………………6
4.彩灯仿真图…………………………………………7
5.彩灯布局图…………………………………………8
五、焊接电路……………………………………………8
六、程序流程……………………………………………9
七、跑马灯程序…………………………………………10
八、下载调试程序………………………………………10
功能扩展
扩展功能要求(5%)
小组间的合作
团结、协作的情况(5%)
应用价值与创新
设计成果的应用价值与创新(5%)
纪律
实训全过程(10%)
实训报告
内容、格式(10%)
跑马灯中断控制实训报告
一、实训目的本次实训旨在通过使用AT89C51单片机,结合中断技术实现对跑马灯的控制,加深对单片机中断系统、定时器/计数器以及程序设计方法的理解和掌握。
二、实训内容1. 硬件设计- 主控制器:AT89C51单片机- 驱动电路:ULN2003A驱动器- 显示电路:8个LED灯- 控制电路:按键开关2. 软件设计- 编写程序实现跑马灯的基本功能,包括:- 跑马灯模式:LED灯依次点亮,形成跑马灯效果。
- 定时控制:通过定时器实现LED灯点亮时间的控制。
- 中断控制:通过外部中断实现按键控制跑马灯模式的切换。
三、实训步骤1. 硬件连接- 将AT89C51单片机的P1.0至P1.7引脚连接至ULN2003A的输入端,用于驱动LED灯。
- 将按键开关连接至单片机的P3.2和P3.3引脚,用于控制跑马灯模式。
- 将ULN2003A的输出端连接至LED灯的正极,负极接地。
2. 程序设计- 初始化配置:- 初始化定时器T0,设置定时时间为50ms。
- 初始化外部中断0和外部中断1,配置中断触发方式为下降沿触发。
- 跑马灯控制:- 设置定时器T0中断,当定时器溢出时触发中断,实现LED灯的点亮和熄灭。
- 在中断服务程序中,通过移动LED灯的位置,实现跑马灯效果。
- 按键控制:- 当按下P3.2引脚对应的按键时,切换跑马灯模式。
- 当按下P3.3引脚对应的按键时,停止跑马灯运行。
3. 程序调试- 编译程序,将生成的HEX文件烧录至AT89C51单片机。
- 连接调试器,观察程序运行情况,确保跑马灯控制功能正常。
四、实训结果与分析1. 跑马灯效果通过实验,成功实现了跑马灯的基本功能,LED灯依次点亮,形成跑马灯效果。
定时器T0的设置保证了LED灯点亮时间的控制,中断技术实现了按键控制跑马灯模式的切换。
2. 中断控制外部中断0和外部中断1的配置保证了按键控制功能的实现。
当按下按键时,中断服务程序会根据按键的引脚和状态切换跑马灯模式或停止跑马灯运行。
接口与通信实验报告
华北电力大学科技学院实验报告||实验名称实验一中断8259应用实验二定时/计时器8253应用实验三并行接口8255应用课程名称接口与通信实验||专业班级:实验班12 学生姓名:陈启明学号:121909020104 成绩:指导教师:刘书刚实验日期:2015/4实验一、中断8259应用一、实验目的1、通过阅读并调试示例程序,学习8088/86与8259A的连接与控制方法,掌握8259A中断控制器的工作原理。
2、完成程序设计题,学会编写中断服务程序。
二、实验条件一台计算机,8259A可编程中断控制器,仿真软件三、实验内容与步骤1、实验原理8259A是一种可编程中断控制器,与8088/86微机兼容,能处理8级向量优先权中断,亦可以通过级联构成64级向量优先权中断系统。
具有可编程控制中断方式,并能分别屏蔽各个中断请求。
通过4个初始化命令字(icw1~icw4)及3个操作命令字(ocw1~ocw3)使用8259A可编程程序中断控制器。
2、实验内容用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。
要求程序对每次中断进行计数,并将计数结果用8255的PA口输出到LED显示。
3、参考流程图及程序mode equ 82hpa8255 equ 8000hctl8255 equ 8003hicw1 equ 00010011bicw2 equ 00100000bicw4 equ 00000001bocw1 equ 11111110bcs8259a equ 09000hcs8259b equ 09001hdata segmentcnt db 0data endscode segmentassume cs:code,ds:data ienter proc nearpush axpush dxmov dx,pa8255inc cntmov al,cntout dx,almov dx,cs8259amov al,20hout dx,alpop dxpop axiretienter endpllnit procmov dx,cs8259amov al,icw1out dx,almov dx,cs8259bmov al,icw2out dx,almov al,icw4out dx,almov al,ocw1out dx,alretllnit endpstart proc nearmov dx,ctl8255mov al,modeout dx,alclimov ax,0mov ds,axmov bx,4*icw2mov ax,codeshl ax,4add ax,offset ienter mov [bx],axmov ax,0inc bxinc bxmov [bx],axcall llnitmov ax,datamov ds,axmov cnt,0mov al,cntmov dx,pa8255out dx,alstilp:nopjmp lpstart endpcode endsend start实验结论与分析错误分析:由于此次实验的连线较多,有几个临近的线连错了,导致显示的结果又问题。
实验报告跑马灯
实验报告一:实验名称跑马灯电路二:实验目的(1)掌握proteus软件的使用方法;(2)调试跑马灯电路的汇编语言;(3)绘制跑马灯原理图,实现电路的实现;三:实验要求跑马灯电路,即实现p1口上的8个发光二极管循环闪亮的电路。
四:实验仪器计算机,keil c51软件,proteus软件。
五:参考程序ORG 0000H ;程序入口AJMP MAIN ;转主程序ORG 30HMAIN:MOV R2,#16 ;将16送给R2MOV A,#0FEH ;将0FEH送给累加器ALOOP:MOV P1,A ;循环,将累加器A的值送给p1LCALL D1 ;长调子程序D1RL A ;累加器循环左移DJNZ R2,LOOP ;R2减1非0则转移到LOOPD1: MOV R4,#10 ;将10送给R4D2: MOV R5,#100 ;将100送给R5D3: MOV R6,#249 ;将249送给R6DJNZ R6,$ ;R6减1不为0,则原地等待DJNZ R5,D3 ;R5减1不为0,则转到D3DJNZ R4,D2 ;R4减1不为0,则转到D2RET ;返回主程序END六:试验步骤(1)进入keil c51系统的操作环境,并建立一个工程,输入汇编程序,对程序进行编译和链接:(2):调试无误后运行程序并检查运行结果,检查正确后生成hex文件:(3):在软件proteus中,绘制电路图,找到此实验需要用到的主要元器件及其符号:1:单片机AT89C51;2:电阻RES 10k;3:电容 CAP 30uF;4:晶振 CRYSTAL ;5;排阻 RESPACK-8;6:开关 BUTTON;7:发光二级管 LED;(4)绘制电路仿真图,然后将生成的hex文件下载到AT89C51中,并开始仿真,结果如下:七:实验结果程序仿真完成后,发光二级管会有规律的从左向右循环闪亮,直到时间结束后才会停下。
实验五 交通灯、跑马灯轮换实验
实验五交通灯、跑马灯轮换实验
一、实验要求
1.以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),
模拟交通灯管理。
2.以K1为切换输入口,控制双色LED灯在交通灯、跑马灯两种状态切换。
二、实验目的
1.学习使用定时计数器进行定时中断控制的方法。
2.学习使用外部中断控制数据输出的设计方法。
3.进一步巩固中断程序的设计技巧。
4.掌握数据表的设计方法。
三、实验电路及连线
接线说明:K1接P3.2;PO0~PO3接DG1~DG4;
PO4~PO7接DR1~DR4。
/CS接8300H
四、实验说明
1.本实验涉及到交通灯控制和跑马灯控制两种状态。
交通灯的变化规律可以参考实验
四之描述。
跑马灯规律如下:四个双色LED灯在任意一时刻,只有两个灯亮,颜
色自定。
在跑马灯的运行中,按照顺时针的方向依次点亮相邻的两个双色LED灯,经过四次变化,跑马灯跑完一圈。
2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正
端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
3.实验进行时,首先是跑马灯状态,在任意时刻,拨动一次KEY1键(自定中断触
发方式),由跑马灯状态切换为交通灯状态;任意时刻拨动一次KEY1键,又由交
通灯状态切换为跑马灯状态。
如此循环。
4.实验要求:程序必须用到定时计数器中断和外部中断。
五、实验框图
六、实验代码
七、实验数据
八、实验小结。
单片机整套实验及程序(交通灯_跑马灯等)
实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。
二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管〔D1、D2、D3、D4〕按照一定的方式点亮。
如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。
●基于Proteus ISIS仿真环境完成上述功能的仿真。
●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。
四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。
五、软件流程图与参考程序●主程序流程图如下:●参考程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table[]={0x0e,0x0d,0x0b,0x07};uchar code table1[]={0x0a,0x05,0x09,0x06};uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};void delay(uint z)//延时函数{uint x;uchar y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0;speed=10;//控制跑马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//翻开总中断ET0=1;//翻开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完本钱实验内容,深刻理解汇编语言程序设计结构。
中断原理实验报告总结(3篇)
第1篇一、实验目的本次实验旨在通过实际操作,加深对中断原理的理解,掌握单片机中断系统的工作机制,学会外部中断和定时/计数器的使用,以及串口数据发送和接收的方法。
二、实验内容1. 外部中断原理及使用(1)实验原理:通过实验,了解外部中断的工作原理,掌握外部中断的使用方法,包括中断源的设置、中断服务程序的编写和中断请求的处理。
(2)实验步骤:设置外部中断源,编写中断服务程序,实现按键控制LED灯亮灭。
2. 定时/计数器的使用(1)实验原理:通过实验,了解定时/计数器的工作原理,掌握定时/计数器的使用方法,包括定时/计数器的初始化、定时/计数器的启动和停止、定时/计数器的中断处理。
(2)实验步骤:设置定时/计数器,实现LED灯的闪烁。
3. 串口数据发送和接收(1)实验原理:通过实验,了解串口通信的工作原理,掌握串口数据发送和接收的方法,包括串口初始化、发送和接收数据的流程。
(2)实验步骤:实现单片机与计算机之间的串口通信,发送和接收数据。
三、实验结果及分析1. 外部中断实验结果及分析实验中,通过按键控制LED灯亮灭,实现了外部中断的基本功能。
实验结果表明,当按键被按下时,外部中断请求信号被触发,中断服务程序被执行,LED灯状态发生改变。
2. 定时/计数器实验结果及分析实验中,通过定时/计数器实现LED灯的闪烁,实现了定时功能。
实验结果表明,定时/计数器能够按照设定的周期产生中断,中断服务程序能够按照要求执行。
3. 串口数据发送和接收实验结果及分析实验中,通过串口通信实现单片机与计算机之间的数据传输。
实验结果表明,单片机能够按照设定的波特率发送和接收数据,计算机端能够正确接收并显示数据。
四、实验总结1. 通过本次实验,加深了对中断原理的理解,掌握了单片机中断系统的工作机制。
2. 掌握了外部中断、定时/计数器和串口通信的使用方法,为后续学习和实践打下了基础。
3. 在实验过程中,培养了动手实践能力,提高了解决问题的能力。
走马灯实验报告
并行IO接口实验实验报告专业:电子信息工程班级:卓越1201班学号: U201213500姓名:钟远维一、实验目的1.掌握GPIO IP核的工作原理和使用方法2.掌握中断控制方式的IO接口设计原理3.掌握中断程序设计方法4.掌握IO接口程序控制方法-------查询方式-------延时方式二、实验任务写一个Led走马灯输出的程序,并下载到FPGA板子上。
用延时、中断两种方式实现。
三、实验原理硬件实现框图如图所示:四、硬件实现步骤1.使用XPS创建一个基于AXI总线的最小计算机系统。
File –> New BSB Project,如图:2.修改时钟设置:将时钟产生器的时钟输入信号进行修改,修改为单一时钟源。
修改后的结果如图:3.添加GPIO IP核,设置LEDs_8Bits配置:a.在IP Catalog标签中,双击下面图标创建GPIO IP核:b.添加GPIO IP核后,将名字改为LED_8Bits,如图:c.更改LED_8Bits配置窗口的属性,如图:4.添加AXI Interrupt Controller IP核:a.在IP Catalog标签中,双击下面图标创建INTC IP核:b.添加axi_intc_0的中断源,如图:c.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:5.产生外部GPIO连接:a.选中LEDs_8Bits中的GPIO_IO_O,选择make external,生成外部连接端口;选中GPIO_IO,设置为“No connection”,取消其外部连接端口。
结果如图:b.在ports标签下,展开External Ports项,可看到LEDs_8Bits生成的LEDs_8Bits_GPIO_IO_PIN端口,如图:6.添加timer IP核:a.选择如图的IP核并双击,添加到工程:b.中断信号的连接结果如图所示:7.配置UCF文件:在UCF文件中修改如图所示配置,配置LED连接电路约束:8.创建工程过程完成后,a.在主界面下选择Hardware->Generate Netlist;b.在主界面下选择Hardware->Generate Bitstream;c.单击Graphical Design View,可以看到系统的连接图,如下:五、应用软件设置1)中断方式实现走马灯a.SDK提供的外设驱动以及应用程序1.点击project->Expert Hardware Design to SDK…,点击Export&Launch SDK:2.在SDK中,点击file->new->board support package,如图:3.点击file->new->application project,创建一个EmptyApplicant工程,如图所示:b.设计用户应用程序用户应用程序的设计包括定时器配置、启动中断系统、设计中断服务程序。
《计算机接口与通信技术》综合实验报告
《计算机接口与通信技术》综合实验报告《计算机接口与通信技术》综合实验报告院系部:专业班级:组长:组员:实验台号:指导教师:成绩:实验日期:实验1 8255A小键盘实验一. 实验目的(1)掌握8255A编程原理。
(2)了解键盘结构,学会读取键盘输入的方法。
二. 实验内容用8255A来实现一个小键盘的输入识别(用行扫描法或反转法均可)。
(1)基于图再完成下述连接,即将8255A的CS端与218~21F插孔相连,此时:8255A的端口A地址为218H端口B地址为219H端口C地址为21AH控制口地址为21BH(2)编写程序,使得在小键盘上按键后,微机屏幕上有相应字符显示出来。
三. 仪器用具四.实验接线图五. 程序设计流程图:程序代码:DA TA SEGMENTTABLE1 DW 0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180HDW 0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280HDW 0401H,0402H,0404H,0408H,0410H,0420H,0440H,0480H CHAR DB 'CDEFBA9845673210WXYSRPMG'MESS DB 'PRESS A KEY ON THE SMALL KEYBOARD!',0AH,0DH DB 'IT WILL DISPLAY ON THE SCREEN ! ',0AH,0DHDB 'PRESS R KEY, RETURN TO DOS !',0AH,0DH,'$' IOPORT EQU 0DC00H-200HIO8255A EQU IOPORT+218H ;8255A口IO8255B EQU IOPORT+219H ;8255B口IO8255C EQU IOPORT+21BH ;8255控制端口DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACKSSTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09INT 21H ;显示提示信息Q1: MOV AL,82H ;送8255控制字,A出口,B入口MOV DX,IO8255COUT DX,ALQ2: MOV AL,00MOV DX,IO8255AOUT DX,AL ;A口输出行值MOV DX,IO8255BIN AL,DX ;B口读入列值AND AL,0FFHCMP AL,0FFHJZ Q2MOV BL,AL ;有键入,保存键值MOV DI,0040 ;延迟,等待释放BB: MOV CX,6000HAA: LOOP AADEC DIJNZ BBMOV DX,IO8255C ;送8255控制字,B口出,A口入MOV AL,90HOUT DX,ALMOV DX,IO8255BMOV AL,BLOUT DX,AL ;B口输出列值MOV DX,IO8255AIN AL,DX ;A口读入行值CMP AL,0FFHJNZ KEYNKEYN: PUSH AX ;去抖MOV DX,IO8255ARELEA: IN AL,DXCMP AL,0FFHJNZ RELEAPOP AXMOV AH,BL ;AH=列值,BH=行值NOT AX ;键值AX求反MOV SI,OFFSET TABLE1 ;送键值表指针MOV DI,OFFSET CHAR ;送字符表指针MOV CX,24Q4: CMP AX,[SI] ;键值查表JZ Q5ADD SI,02 ;未查到,修改表指针INC DILOOP Q4JMP Q1Q5: MOV DL,[DI] ;查到,显示该字符CMP DL,'R'JZ Q6MOV AH,02HINT 21HJMP Q1Q6: MOV AX,4C00H ;键值='R',返回DOSINT 21HCODE ENDS六.试验方法与步骤1.按实验要求连线将8255A的CS端与218~21F插孔相连2.编程,程序如上3.运行程序七.实验结果八.讨论与结论操作实验板上的小键盘按键会在计算机屏幕上进行显示,对键盘上的WXYS键都以空格响应,R退出,其余显示对应字符。
跑马灯实验报告
一、实验目的1. 熟悉嵌入式系统硬件电路的搭建与调试;2. 掌握C语言编程,实现跑马灯功能;3. 理解并掌握GPIO口操作,学习定时器中断的使用。
二、实验环境1. 开发板:STM32F103C8T6开发板2. 编译器:Keil uVision53. 软件库:STM32标准外设库三、实验原理跑马灯实验是通过控制LED灯的亮灭,实现LED灯依次点亮的效果。
实验原理如下:1. GPIO口控制:将LED灯连接到开发板的GPIO口,通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;2. 定时器中断:定时器产生中断,实现LED灯点亮与熄灭的时间间隔;3. 循环控制:通过循环控制LED灯的点亮顺序,实现跑马灯效果。
四、实验步骤1. 硬件电路搭建(1)将LED灯的正极连接到开发板的GPIO口,负极接地;(2)将开发板的电源和地线连接到电源模块。
2. 软件编程(1)在Keil uVision5中创建项目,并导入STM32标准外设库;(2)编写程序,实现以下功能:a. 初始化GPIO口,将LED灯连接的GPIO口配置为输出模式;b. 初始化定时器,设置定时器中断周期,使LED灯点亮与熄灭的时间间隔为1ms;c. 编写定时器中断服务程序,控制LED灯的点亮与熄灭;d. 编写主函数,实现LED灯依次点亮的效果。
3. 编译与下载(1)编译程序,生成可执行文件;(2)将开发板连接到计算机,通过串口下载程序到开发板。
4. 实验调试(1)打开串口调试助手,观察LED灯的点亮与熄灭效果;(2)调整程序参数,优化跑马灯效果。
五、实验结果与分析1. 实验结果(1)LED灯依次点亮,实现跑马灯效果;(2)LED灯点亮与熄灭的时间间隔可调。
2. 实验分析(1)通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;(2)定时器中断实现LED灯点亮与熄灭的时间间隔控制;(3)循环控制实现LED灯依次点亮的效果。
六、实验总结本次实验成功实现了跑马灯功能,加深了对嵌入式系统硬件电路、C语言编程和GPIO口操作的理解。
实验报告四中断系统实验
实验报告四中断系统实验实验报告四:中断系统实验一、实验目的本次中断系统实验的主要目的是深入理解计算机中断系统的工作原理和机制,掌握中断的处理过程,以及学会如何在实际编程中有效地运用中断来提高系统的性能和响应能力。
二、实验原理中断是指计算机在执行程序的过程中,当出现某种随机事件或异常情况时,暂停现行程序的执行,转而执行相应的中断处理程序,处理完后再返回原程序继续执行的过程。
中断系统主要由中断源、中断控制器和中断处理程序组成。
中断源可以是外部设备(如键盘、鼠标、打印机等)发送的信号,也可以是内部事件(如定时器溢出、算术运算错误等)产生的条件。
中断控制器负责对多个中断源进行优先级管理和分配,确定哪个中断请求能够被响应。
中断处理程序则是用于处理具体中断事件的一段代码。
在中断处理过程中,计算机需要保存当前程序的上下文(包括程序计数器、寄存器等),以便在中断处理完成后能够正确地恢复原程序的执行。
同时,中断处理程序需要尽快完成处理任务,以减少对系统性能的影响。
三、实验设备与环境本次实验使用的设备包括一台计算机、开发板以及相应的编程软件。
开发板上集成了中断控制器和相关的外部设备接口,以便进行中断实验的操作和观察。
编程软件采用了常见的集成开发环境(IDE),如 Keil、IAR 等,用于编写和调试中断处理程序。
四、实验步骤1、硬件连接首先,将开发板与计算机通过数据线连接,并确保连接稳定。
然后,根据实验要求,将外部设备(如按键、传感器等)正确连接到开发板的相应接口上。
2、软件开发(1)在编程软件中创建一个新的项目,并选择适合开发板的芯片型号。
(2)配置中断控制器的相关参数,如中断优先级、触发方式等。
(3)编写中断处理程序,在程序中实现对中断事件的具体处理逻辑。
例如,当按键被按下时,控制 LED 灯的亮灭;当传感器检测到特定值时,进行数据采集和处理。
(4)编写主程序,在主程序中初始化系统,并开启中断功能。
3、编译与下载完成程序编写后,对代码进行编译,确保没有语法错误和逻辑错误。
微机原理_中断实验报告(3篇)
第1篇一、实验目的1. 理解中断系统的基本概念和工作原理。
2. 掌握中断源、中断向量、中断服务程序等基本概念。
3. 学习使用Keil软件进行中断程序的编写和调试。
4. 熟悉中断在微机系统中的应用。
二、实验原理中断系统是微机系统中重要的组成部分,它允许CPU在执行程序的过程中,响应外部事件或内部事件,从而实现多任务处理。
中断系统主要包括以下几个部分:1. 中断源:产生中断请求的设备或事件,如外部设备、定时器、软件中断等。
2. 中断向量:中断服务程序的入口地址,用于CPU在响应中断时找到相应的服务程序。
3. 中断服务程序:处理中断请求的程序,完成中断处理任务。
4. 中断优先级:不同中断源的优先级不同,用于确定中断响应的顺序。
三、实验设备与软件1. 实验设备:单片机实验板、计算机、Keil软件、Proteus仿真软件。
2. 实验软件:Keil uVision4、Proteus 8.0。
四、实验内容1. 外部中断实验(1)使用外部中断0(INT0)实现按键控制LED灯的亮灭。
(2)使用外部中断1(INT1)实现按键控制LED灯的闪烁。
2. 定时器中断实验(1)使用定时器0产生1秒的定时中断,实现LED灯的闪烁。
(2)使用定时器1产生1秒的定时中断,实现按键输入的计数。
3. 软件中断实验(1)使用软件中断实现按键输入的字符显示。
(2)使用软件中断实现按键输入的字符加密显示。
五、实验步骤1. 在Keil软件中创建一个新项目,选择合适的单片机型号。
2. 根据实验要求,编写中断服务程序,设置中断向量。
3. 在Proteus软件中搭建实验电路,包括单片机、按键、LED灯等。
4. 将Keil软件编译后的程序下载到单片机中。
5. 在Proteus软件中运行仿真,观察实验结果。
六、实验结果与分析1. 外部中断实验(1)按键按下时,LED灯亮;按键松开时,LED灯灭。
(2)按键按下时,LED灯闪烁;按键松开时,LED灯停止闪烁。
跑马灯实验报告
跑马灯实验报告单片机跑马灯(流水灯)控制实验报告单片机实验报告姓名:学号:一、实验实现功能:1:计数器功能2:流水灯二、具体操作:1、计数器功能数码管的动态显示。
每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。
2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms。
三、程序流程图四、程序#include <reg50 ;//LED 开关void delay(uint16 i); //延时函数声明void refresh ();// 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main()//主函数{TMOD = 0x01;//定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18;//定时器初值使每次循环为1msTR0 = 0;//定时器0开始作ET0 = 0; // 定时器中断关EA = 0;// 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10];//十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000];//千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000];//千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j;// 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++)//四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20);//延时消抖}}/*************定时器的中断服务函数**************/ void Timer0_Overflow() interrupt 1//定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1;//中断开放ET0 = 1; //定时器0中断开while(1){}}Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{ P0=~(1<<j++);//控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{ j=0;}。
实验一跑马灯实验
目录实验一跑马灯实验 (1)实验二按键输入实验 (3)实验三串口实验 (5)实验四外部中断实验 (8)实验五独立看门狗实验 (11)实验七定时器中断实验 (13)实验十三ADC实验 (15)实验十五DMA实验 (17)实验十六I2C 实验 (21)实验十七SPI 实验 (24)实验二十一红外遥控实验 (27)实验二十二DS18B20实验 (30)1 / 32'.实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。
二.实验目的掌握STM32 开发环境,掌握从无到有的构建工程。
三.实验内容熟悉MDK KEIL 开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。
通过ISP 下载代码到实验板,查看运行结果。
使用JLINK 下载代码到目标板,查看运行结果,使用JLINK 在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL 开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6. 编写代码7. 编译代码8.使用ISP下载到实验板9.测试运行结果10.使用JLINK 下载到实验板11.单步调试12. 记录实验过程,撰写实验报告六.实验结果及测试源代码:int main(void}<5tm32_Clock_IniC (9); /,耒红对甘去置delay^init (72 >; "延吋初始<tLED Tnit:C>;"初维花与LED连接的硬伴接口while tl){匚EDO=O;匸ED1=1;de .lay ms (300 J ;LEDO=1;LEDL-0;delay ms(3"0^;两个灯LEDO与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。
实验一 跑马灯实验
目录实验一跑马灯实验 (1)实验二按键输入实验 (3)实验三串口实验 (5)实验四外部中断实验 (8)实验五独立看门狗实验 (11)实验七定时器中断实验 (13)实验十三 ADC实验 (15)实验十五 DMA实验 (17)实验十六 I2C实验 (21)实验十七 SPI实验 (24)实验二十一红外遥控实验 (27)实验二十二 DS18B20实验 (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。
二.实验目的掌握STM32开发环境,掌握从无到有的构建工程。
三.实验内容熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。
通过ISP 下载代码到实验板,查看运行结果。
使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6.编写代码7.编译代码8.使用ISP下载到实验板9.测试运行结果10.使用JLINK下载到实验板11.单步调试12.记录实验过程,撰写实验报告六.实验结果及测试源代码:两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。
七.实验总结通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDK KEILC 软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDK KEIL软件,用这个软件来编程和完成一些功能的实现。
作为STM32 的入门第一个例子,详细介绍了STM32 的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。
实验二按键输入实验一.实验简介在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。
中断计时走马灯实验报告
s=s>>1; s=s|0x80; } else if (i==1) {
s=0x7f; } else { s=0xfe; i=0; } } } }
//led 标志位加一 //当 j=T 时给 j 复位 //如不是第八个 led 亮 //m 按位右移一位,点亮下一个 led //给 P0.7 赋值 1,避免 P0.7 口 led 也亮
void main(void) {
clearmen(); while(1) {
P0=s; if(P1_0 == 0||P1_1 == 0)
{ T=10;
} if(P1_2 == 0)
{ T=3;
} } }
//系统初始化 //将 s 值赋给 P0 口,点亮相应的 led
void time_intt0(void) interrupt 1 //中断函数
{
TR0=0;
//关中断
TH0=0x3C;TL0=0xB0;
//从新赋值
TR0=1;
//开中断
j++;
//T 的标志位加一
if(P1_0 == 0||P1_2 == 0)
{
if (j==T)
{
i++;
//led 标志位加一
j=0;
//当 j=T 时给 j 复位
if (i<8)
//如不是第八个 led 亮
具体如下:a.开关 1 闭合时,LED 灯由上至下依次显示; b.开关 2 闭合时,LED 灯由下至上依次显示; c.开关 3 闭合时,LED 灯由上至下加速依次显示。
2、运用 KeilC 软件完成流水灯实验的程序,延时时间用单片机的定时器实现。 3、运用 Proteus ISIS 软件完成流水灯实验的硬件电路设计。 4、实现 KeilC 与 Proteus 软件的联调。 三.流水灯硬件电路图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北电力大学科技学院实验报告||实验名称微机综合实验课程名称接口与通信||实验十可编程并行接口实验一、实验目的(1)通过阅读并调试示例程序,掌握8255A可编程并行接口的工作原理。
(2)完成程序设计题。
学会并行接口电路的设计。
及编写输入输出控制程序。
二、实验内容1.实验原理8255A是可编程的通用并行输入/输出接口芯片,因通用性强,使用灵活,可直接与CPU总线相连,应用非常广泛。
8255A芯片内部有3个8为的输入/输出端口,即A口,B口和C口。
从内部控制的角度来讲,可分为两组:A组合B组。
A组控制模块管理A口和C口德高四位(PC7~PC4),B组控制模块管理B口和C口的低四位(PC3~PC0)。
面向I/O设备的信号线:(1)PA7~PA0:A口I/O信号线(2)PB7~PB0:B口I/O信号线(3)PAC~PC0:C口I/O信号线面向系统的信号线:(1)D7~D0:双向数据线,可与系统数据总线相连;(2)/CS:片选信号,当/CS=0时,选中8255A;(3)A1、A0:端口选择信号,当/CD有效时,再由A1、A0的组合确定选择A口】B口、C口或控制寄存器口;(4)/RD:芯片读信号,当/RD=0是。
CPU从8255A的指定端口读取数据或状态;(5)/WR:芯片写信号,当/WR=0时,CPU想向8255A的制定端口写入数据或控制字;(6)RESET:复位信号,当RESET=1时,所以内部寄存器都被清零,3个端口被自动设为入端口。
8255A的三种工作方式:(1)方式0:基本输入/输出方式;(2)方式1:选通型输入/输出方式(3)方式2:双向数据传送方式8255A的控制字:(1)工作方式选择控制字,D7~D0控制位的含义见表。
(2)C口按位置位/复位控制字。
2.实验内容扩展一片8255A,使其端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B,端口A输出线接至一组发光二极管上,通过对8255A编程实现将开关状态送发光二极管显示。
3.实验程序MODE EQU 082HPROTA EQU 8000HPORTB EQU 8001HPROTB EQU 8002HCADDR EQU 8003HCODE SEGMENTASSUME CS:CODESTART:MOV AL,MODEMOV DX,CADDROUT DX,ALMOV DX,PORTBIN AL,DXMOV DX,PORTAOUT DX,ALMOV CX,200LOOP $JMP STARTCODE:ENDSENDS START三、思考题跑马灯程序设计,要求K0=0时,从左向右跑马灯;K1=0时,从右向左跑马灯;K2=0时,从左从右向中间跑马灯,LED从PC口输出。
完成得安路设计及程序的编译,进行调试并验证结果。
程序设计如下:mode equ 082hporta equ 8000hportb equ 8001hportc equ 8002hcaddr equ 8003hCODE SEGMENTassume cs:codestart:mov al,modemov dx,caddrout dx,almov dx,portbin al,dxcmp al,00hjz leftcmp al,02hjz rightcmp al,04hjz midjmp lastleft:mov cx,8mov al,10000000bL1:mov dx,portaout dx,alpush cxror al,1mov cx,8000hloop $pop cxloop L1jmp startRight:mov cx,8mov al,00000001bR1:mov dx,portaout dx,alpush cxmov cx,8000hloop $pop cxrol al,1loop R1jmp startmid:mov al,10000001bmov dx,portaout dx,almov cx,8000hloop $mov al,01000010bout dx,almov cx,8000hloop $mov al,00100100bout dx,almov cx,8000hloop $mov al,00011000bout dx,almov cx,8000hloop $jmp startlast:mov al,00000000bmov dx,portaout dx,aljmp startcode endsend start四、实验心得通过设计跑马灯电路,对于硬件的连接有了更深一层的认识,同时对于编程的熟练有了一定的提高,同时认识到控制信号的使用。
实验十一8259A中断实验一、实验目的(1)通过阅读并调试示例程序,学习8088/86与8259A的连接与控制方法,掌握8259A中断控制器的工作原理。
(2)完成程序设计题,学会编写中断服务程序。
二、实验内容1.实验原理8259A是一种可编程序中断控制器,与8088/86微机兼容,能处理8级优先权中断,亦可以通过级联构成64级向量优先权中断系统。
具有可编程控制中断方式,并能分别屏蔽各个中断请求。
通过4个初始化命令字(ICW1~ICW4)及3个操作命令字(OCW1~OCW3)使用8259A可编程中断控制器。
(1)初始化命令字1)ICW1写入双数地址。
2)ICW2写入单数地址3)ICW3写入单数地址4)ICW4写入单数地址(2)操作命令字1)OCW1写入单数地址2)OCW2写入双数地址3)OCW3写入双数地址2.实验内容用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。
要求程序中对每次中断进行计数,并将计数结果用8255A的PA端口输出到LED显示。
3.实验电路实验电路参考实验指导书。
4.参考程序参考实验指导书5.程序设计修改上述程序,使每中断10次计数器加1,并将计数结果从8255的PB口输出到LED显示。
完成电路设计及程序的编制,进行调试并验证结果。
程序如下:mode equ 80hpa8255 equ 8000hpb8255 equ 8001hctl8255 equ 8003hicw1 equ 00010011bicw2 equ 00100000bicw4 equ 01hocw1 equ 11111110bcs8259a equ 09000hcs8259b equ 09001hdata segmentcnt db 0cn db 0data endscode segmentassume cs:code,ds:dataienter proc nearpush axpush dxmov dx,pb8255inc cntcmp cnt,0ahjnz P1mov cnt,0inc cnmov al,cnout dx,alP1:mov dx,cs8259amov al,20hout dx,alpop dxpop axiretienter endpinit proc nearmov dx,cs8259amov al,icw1out dx,almov dx,cs8259bmov al,icw2out dx,almov al,icw4out dx,almov al,ocw1out dx,alretinit endpstart proc nearmov dx,ctl8255mov al,modeout dx,alclimov ax,0mov ds,axmov bx,4*icw2mov ax,offset ientermov [bx],axmov ax,codeinc bxinc bxmov [bx],axcall initmov ax,datamov ds,axmov cn,0mov al,cnmov dx,pb8255out dx,alstilp:nopjmp lpstart endpcode endsend start三、实验结果成功实现10次中断计数器加1的功能,成功完成题目的内容。
四、实验心得对于中断的使用有很大的提高,能够熟悉控制中断,同时与如何使用计数器和寄存器有了一定的提高,同时了解和熟悉了中断程序的编写。
实验十二可编程定时器/计数器实验一、实验目的通过阅读并调试示例程序,完成程序设计题,掌握8253的基本工作原理和编程方法,熟悉8253在系统中的典型接法。
二、实验内容1.实验原理8253(或8254)可编程定时/计数器是Intel公司产生的通用外围接口芯片,它有3个独立的16位计数器,计数范围0~2MHz,而8253—2和8254的最高技术频率为5MHz。
它所有的计数方式和操作方式都通过编程控制。
2.程序设计按图接线,通过编程实现LED指示灯以1s的时间间隔闪烁。
并通过在硬件上接线,实现在7段数码管上刷新显示。
程序如下:CONTROL EQU 08003HCOUNT0 EQU 08000HCOUNT1 EQU 08001HCOUNT2 EQU 08002H CODE SEGMENTASSUME CS:CODE START PROC NEARMOV AL,36HMOV DX,CONTROLOUT DX,ALmov AX,10000MOV DX,COUNT0OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,76HMOV DX,CONTROLOUT DX,ALMOV AX,1000MOV DX,COUNT1OUT DX,ALMOV AL,0OUT DX,ALAGAIN:MOV AL,00000000BMOV DX,CONTROLOUT DX,ALMOV DX,COUNT0IN AL,DXMOV BL,ALIN AL,DXMOV AH,ALMOV AL,BLJMP AGAINOUT DX,ALMOV DX,COUNT0IN AL,DXMOV BL,ALIN AL,DXMOV AH,ALMOV AL,BLJMP AGAIN START ENDPCODE ENDSEND STARTmode equ 82hpb equ 9001hpa equ 9000hctl equ 9003hcs0809 equ 8000houtbit equ 0b002houtseg equ 0b004hdata segmentledmap:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb 7fh,6fh,77h,7ch,39h,5eh,79h,71h data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov al,modemov dx,ctlout dx,alagain:mov si,offset ledmapmov al,0mov dx,cs0809out dx,altest1:mov dx,pbin al,dxtest al,01hjz test1mov dx,cs0809in al,dxmov dx,paout dx,almov ah,aland al,0fhmov bh,0mov bl,aladd bx,simov si,bxmov al,[si]mov dx,outsegout dx,almov dx,outbitmov al,01hout dx,almov al,0out dx,almov al,ahand al,0f0hshr al,4mov bh,0mov bl,almov si,offset ledmapadd bx,simov si,bxmov al,[si]mov dx,outsegout dx,almov al,02hmov dx,outbitout dx,almov al,00hout dx,aljmp againcode endsend start三、实验结果成功实现LED灯每隔一秒计数闪烁一次,亦即是只能够实现频闪,但是并不能同时做到七段数码器计数,不停刷新数字计数。