实验二单片机P1口输入输出及中断实验.docx

上传人:b****4 文档编号:24587916 上传时间:2023-05-29 格式:DOCX 页数:17 大小:162.30KB
下载 相关 举报
实验二单片机P1口输入输出及中断实验.docx_第1页
第1页 / 共17页
实验二单片机P1口输入输出及中断实验.docx_第2页
第2页 / 共17页
实验二单片机P1口输入输出及中断实验.docx_第3页
第3页 / 共17页
实验二单片机P1口输入输出及中断实验.docx_第4页
第4页 / 共17页
实验二单片机P1口输入输出及中断实验.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验二单片机P1口输入输出及中断实验.docx

《实验二单片机P1口输入输出及中断实验.docx》由会员分享,可在线阅读,更多相关《实验二单片机P1口输入输出及中断实验.docx(17页珍藏版)》请在冰豆网上搜索。

实验二单片机P1口输入输出及中断实验.docx

实验二单片机P1口输入输出及中断实验

单片机P1口输入输出及外部中断实验

1、实验目的

1、学习P1口的使用方法。

2、学习延时子程序的编写和使用。

3、熟练在汇编软件环境下编写、修改、调试、和运行硬件程序

4、熟悉汇编语言

2、实验说明

1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2、P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。

编程时应注意P1.0,P1.1作为输入口时应先置1,才能正确读入值。

3、用单次脉冲申请中断,在中断处理程序中使P1.0的输出状态发生反转,并通过发光二极管观察P1.0的电平。

3、实验仪器

计算机

伟福软件(lab2000P)

4、实验内容

1、P1口是准双向口。

它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。

若不先对它置“1”,读入的数据是不正确的。

2、8051延时子程序的延时计算问题,计算和估算延时子程序的时间。

3、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。

4、必须在中断程序中设定是否允许中断重入,即设置EXO位。

1>关于延时子程序的时间计算,查指令表可知MOV和DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以上面延时子程序该的执行时间为:

(256×255+2)×2×12÷6≈261ms

2>采用P1口作输出

P1口是准双向口,它作为输出口使用时具有锁存功能。

实验所需要LED电平显示电路如图所示。

3>采用P1口作输入和输出

由P1口的准双向口结构可知,当作为输入口时,必须先对它置“1”。

若不先对它置“1”,读入的数据是不正确的。

实验所需要LED电平显示电路和逻辑电平开关电路如图所示。

思考题

1、改变延时时间,变快或者变慢,观察效果;

2、第2个实验在每个端口增加软件延时,延时时间变快或者变慢,观察拨动开关响应效果;

3、改变流水灯的运行方向;

4、改变流水灯的运行模式,双灯对跑,双灯一起跑。

5、把实验改为int1中断,需要改动几处,如何改动。

6、把实验改为同时int0和int1中断驱动2个灯,需要改动几处,如何改动。

程序参考流程框图

实验电路及连线

实验电路

5、源程序修改原理及其仿真结果

流水灯实验1:

Loop:

mova,#01h

movr2,#8

Output:

movP1,a

rla

callDelay

djnzr2,Output

LjmpLoop

Delay:

movr6,#0

movr7,#0

DelayLoop:

djnzr6,DelayLoop

djnzr7,DelayLoop

ret

end

思考题一:

修改延时子程序

查指令表可知MOV和DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以上面延时子程序该的执行时间为:

(256×255+2)×2×12÷6≈261ms=0.261s

在ms级别上人眼是无法区别快慢的,所以设计增加延时到s级别以区别于ms,即此延时级别上增加十倍,修改程序如下

Delay:

movr6,#0

movr7,#0

movr5,#0Ah;若效果不明显可以增大倍数

DelayLoop:

djnzr6,DelayLoop

djnzr7,DelayLoop

djnzr5,DelayLoop

ret

end

修改后的仿真结果为

实现了秒级别的延时。

思考题三:

改变流水灯的运行方向

修改程序如下:

Loop:

mova,#01h

movr2,#8

Output:

movP1,a

rra;rl表示左移,rr表示右移,可实现流水灯方向的变换

callDelay

djnzr2,Output

LjmpLoop

思考题四:

改变流水灯的运行模式,双灯对跑,双灯一起跑

修改为双灯对跑:

Loop:

movr0,#01h

movr1,#80h

movr2,#4;若改为8可以实现相对点亮然后相反点亮的循环

Output:

mova,r0

adda,r1

movP1,a;由于只有a可以实现移位功能,故用r0和r1将数据暂存,然后分别实现移位后相加移入a再赋值,以实现双灯对跑

mova,r0

rla

movr0,a

mova,r1

rra

movr1,a

callDelay

djnzr2,Output

ljmpLoop

Delay:

movr6,#0

movr7,#0

DelayLoop:

djnzr6,DelayLoop

djnzr7,DelayLoop

ret

end

软件仿真结果及实验现象描述:

;复位后P1口均为高电平

;第一次实现r0和r1数据相加赋值给P1,点亮边沿的两盏灯

;实现r0和r1数据的移位以后再次相加赋值给p1口,实现左右的四盏灯对跑

;循环次数为4次,完成后回到点亮边沿的两盏灯

修改为双灯一起跑:

Loop:

mova,#11h

movr2,#8

Output:

movP1,a

rla

callDelay

djnzr2,Output

LjmpLoop

软件仿真结果及实验现象描述:

复位后P1口都为高电平

赋入a的初值,此时0和4灯亮

a值左移位再次赋值,此时1和5灯亮,一下同理

流水灯实验2:

思考题二:

每个端口增加软件延时,延时时间变快或者变慢,观察拨动开关响应效果

KeyLeftequP1.0

KeyRightequP1.1

LedLeftequP1.2

LedRightequP1.3

SETBKeyLeft

SETBKeyRight

Loop:

MOVC,KeyLeft

CallDelay;在读入数据与传送数据间增加延时,观察控制效果

MOVLedLeft,C

MOVC,KeyRight

CallDelay

MOVLedright,C

LJMPLoop

Delay:

movr6,#0

movr7,#0

movr5,#0Ah;若效果不明显可以增大倍数或者减小倍数

DelayLoop:

djnzr6,DelayLoop

djnzr7,DelayLoop

djnzr5,DelayLoop

ret

end

思考题五:

如果LED灯为低电平点亮应如何改动

若LED灯为低电平点亮则只需将赋值中的0和1对换,如源程序中的a赋值为01h,然后对它进行移位再赋值,此时就应该改为赋值feh,然后移位时候相当于移的是0信号,让各个口循环出现低电平,以实现点亮LED灯。

其他点亮方式同理。

思考题六:

把实验改为int1中断,需要改动几处,如何改动

LEDequP1.0

LEDBufequ0

ljmpStart

org13h;13h为中断1的入口地址

Interrupt1:

;改为中断1的中断子程序

pushPSW;保护现场

cplLEDBuf;取反LED

movc,LEDBuf

movLED,c

popPSW;恢复现场

reti

org100H

Start:

clrLEDBuf

clrLED

movTCON,#00000100;外部中断1下降沿触发

movIE,#10000100;打开外部中断允许位(EX1)及总中断允许位(EA)

ljmp$

end;硬件接口要改变,单脉冲要接P3.3

思考题七:

把实验改为同时int0和int1中断驱动2个灯,需要改动几处,如何改动

LEDequP1.0

LED2equP1.1

LEDBufequ0

LEDBuf2equ0;增加P1.1灯对应的参数

ljmpStart

org3

Interrupt0:

pushPSW;保护现场

cplLEDBuf;取反LED

movc,LEDBuf

movLED,c

popPSW;恢复现场

reti

org13h

Interrupt1:

pushPSW

cplLEDBuf2

movc,LEDBuf2

movLED2,c

popPSW

reti;增加INT1中断子程序,使两个中断互不干扰

org100H

Start:

clrLEDBuf

clrLED

clrLEDBuf2

clrLED2

movTCON,#00000101;外部中断1和中断0下降沿触发

movIE,#10000101;打开外部中断允许位(EX1&EX0)及总中断允许位(EA)

ljmp$

end;硬件连接注意INT0输入对应P3.2,输出对应P1.0接L0,INT1输入对应P3.3,输出对应P1.1接L1

硬件仿真结果:

单脉冲接P3.2口时控制L0灯,按下单脉冲L0灯的状态发生一次转变,实现了连续按键L0灯一亮一灭闪烁,接P3.3都是L1灯出现同样的效果,说明实现了中断控制灯的状态转换,并且两个中断互不影响。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1