单片机实验4

来源:互联网 发布:linux 执行权限 编辑:程序博客网 时间:2024/05/22 14:21

实验4.1 通过外部中断使P1口的开关控制8个发光二极管,开始是P1.0所接的灯亮,以后每中断一次,下一个灯亮,顺序左移,周而复始。

这次实验让我们使用外部中断来控制小灯,目的就是为了让我们巩固外部中断方面的只是,IE寄存器,TCON寄存器,以及外部中断的起始地址.

汇编程序:

ORG 0000H LJMP START ORG 0003H ;这里使用外部中断0,起始地址是03HJMP I0ORG 0040H START: SETB EA  ;中断总开关SETB EX0 ;外部中断0开关SETB IT0 ;下降沿触发MOV P1,#01HSJMP $I0:      ;中断服务程序MOV A,P1RL AMOV P1,ARETIEND

C语言程序:
这里记录一下C语言中的中断编号的意思:
0 外部中断0
1 定时/计数器0中断
2 外部中断1
3 定时/计数器1中断
4 串行口发送与接受中断
5 定时/计数器2中断

#include<reg52.h>int0()interrupt 0{     uchar a=P1;    a<<=1;    if(a==0)        //因为C语言中的左移不是循环的,所以这里判断一下        a=0x01;    P1=a;}main(){    EA=1;    EX0=1;    IT0=1;    P1=0x01;    while(1){    }}

实验4.2 外部中断控制P1口连接的8个发光二极管,同时亮,或同时灭,每中断一次,变反一次。

这个实验和上面那个差不多,没有什么难度

汇编程序:

ORG 0000H LJMP START ORG 0003HJMP I0ORG 0040H START: SETB EASETB EX0SETB IT0MOV P1,#00HSJMP $I0:MOV A,P1CPL AMOV P1,ARETIEND

C语言程序:

#include<reg52.h>int0()interrupt 0{    P1=~P1;}main(){    EA=1;    EX0=1;    IT0=1;    P1=0x00;    while(1){    }}
原创粉丝点击