单片机 程序 外部中断中断.docx

上传人:b****6 文档编号:15325163 上传时间:2023-07-03 格式:DOCX 页数:15 大小:36.39KB
下载 相关 举报
单片机 程序 外部中断中断.docx_第1页
第1页 / 共15页
单片机 程序 外部中断中断.docx_第2页
第2页 / 共15页
单片机 程序 外部中断中断.docx_第3页
第3页 / 共15页
单片机 程序 外部中断中断.docx_第4页
第4页 / 共15页
单片机 程序 外部中断中断.docx_第5页
第5页 / 共15页
单片机 程序 外部中断中断.docx_第6页
第6页 / 共15页
单片机 程序 外部中断中断.docx_第7页
第7页 / 共15页
单片机 程序 外部中断中断.docx_第8页
第8页 / 共15页
单片机 程序 外部中断中断.docx_第9页
第9页 / 共15页
单片机 程序 外部中断中断.docx_第10页
第10页 / 共15页
单片机 程序 外部中断中断.docx_第11页
第11页 / 共15页
单片机 程序 外部中断中断.docx_第12页
第12页 / 共15页
单片机 程序 外部中断中断.docx_第13页
第13页 / 共15页
单片机 程序 外部中断中断.docx_第14页
第14页 / 共15页
单片机 程序 外部中断中断.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机 程序 外部中断中断.docx

《单片机 程序 外部中断中断.docx》由会员分享,可在线阅读,更多相关《单片机 程序 外部中断中断.docx(15页珍藏版)》请在冰点文库上搜索。

单片机 程序 外部中断中断.docx

单片机程序外部中断中断

实验四外部中断与一位数码管静态显示实验

一、实验目的

1、通过实验掌握静态显示的工作原理;

2、通过实验掌握如何设置控制外部中断的特殊功能寄存器;

3、通过实验掌握外部中断的工作原理。

二、实验内容

注:

实验前先将矩阵按键模块的INT0和INT1插针用短路套短接。

1、根据电路图图1-6编写程序,由P1口控制八个LED,按键INT0和按键INT1控制八个LED循环点亮的方向。

初始状态八个LED全部熄灭,如果按键INT0按下,由电路板上LED7→LED0逐个移位点亮(每一时刻只有一个点亮),到LED0后停止;如果按键INT1按下,由电路板上LED0→LED7逐个移位点亮(每一时刻只有一个点亮),到LED7后停止;

2、根据电路图图1-6编写程序,由P1口控制八个LED,按键INT0和按键INT1控制八个LED循环点亮的方向。

初始状态八个LED全部熄灭,如果按键INT0按下,由电路板上LED7→LED0逐个移位点亮(每一时刻只有一个点亮),到LED0再由LED7→LED0逐个移位点亮;如果按键INT1按下,由电路板上LED0→LED7逐个移位点亮(每一时刻只有一个点亮),到LED7再由LED0→LED7逐个移位点亮;

3、根据电路图图1-6编写程序,由P1口控制八个LED,按键INT0和按键INT1控制八个LED循环点亮的方向。

初始状态八个LED由LED7→LED0逐个移位点亮,如果按键INT0按下,循环点亮的方向向右(每一时刻只有一个点亮);如果按键INT1按下,循环点亮的方向向左(每一时刻只有一个点亮),无论哪个LEDx正在被点亮,都从该位LEDx开始反向循环点亮;

4、根据电路图图1-6编写一个P0口控制段选信号和P2.7引脚控制位选信号的一位数码管静态显示程序,初始状态显示“0”;如果按键INT0按下,显示加一后的数值;如果按键INT1按下,显示减一后的数值;如果加到“9”再加一,显示“0”;如果减到“0”再减一,显示“9”;

5、根据电路图图1-6编写一个P0口控制段选信号和P2.7引脚控制位选信号的一位数码管静态显示程序,初始状态显示全灭;如果按键INT0按下,数码管的显示段被逐个移位点亮的方向“a段→f段”(每一时刻只有一段点亮,数码管顺时钟作画圈动画);如果按键INT1按下,数码管的显示段被逐个移位点亮的方向“f段→a段”(每一时刻只有一段点亮,数码管逆时钟作画圈动画);

6、自己编写程序,设计数码管动态显示和按键的创意实验。

注意:

调整适当的延时时间,不使用外部中断不算完成。

图1-6外部中断与静态显示电路图

评分表

序号

评分项目

分值

评分

备注

1

完成1题

20

1、电路图的理解

2、LED点亮的延时

3、中断端的设置

4、中断函数的编写

2

完成2题

20

1、LED点亮的延时和循环

2、中断端的设置

3、中断函数的编写

3

完成3题

20

1、LED点亮的延时和循环

2、中断端的设置

3、中断函数的编写

4

完成4题

20

1、电路图的理解

2、静态显示准确

3、中断端的设置

4、中断函数的编写

5

完成5题

1、静态显示准确

2、中断端的设置

3、中断函数的编写

5

创意性实验

20

6

独立完成实验,如有抄袭、拷贝及其他非独立完成实验的方法以上的所有分值为零

-100

第一个#include

#defineuintunsignedint

#defineucharunsignedchar

//////////////////////////////

voiddelay_ms(uintt)

{

uchari;

while(t--)

{

for(i=0;i<110;i++)

{;;}

}

}

///////////////////////////////

voidinit()

{

EX0=1;

EX1=1;

IT0=1;

IT1=1;

EA=1;

}

///////////////////////////////

voidINT0_1(void)interrupt0

{

uchartemp;

uchari;

P1=0xff;

temp=0x01;

for(i=0;i<8;i++)

{

P1=~temp;

temp=temp<<1;

delay_ms(500);

}

}

///////////////////////////////

voidINT1_1(void)interrupt2

{

uchartemp;

uchari;

P1=0xff;

temp=0x80;

for(i=0;i<8;i++)

{

P1=~temp;

temp=temp>>1;

delay_ms(500);

}

}

///////////////////////////////

voidmain()

{

init();

while

(1);

}

第二个#include

#defineuintunsignedint

#defineucharunsignedchar

uchartemp;

uchari,k;

//////////////////////////////

voiddelay_ms(uintt)

{

uchari;

while(t--)

{

for(i=0;i<110;i++)

{;;}

}

}

///////////////////////////////

voidinit()

{

EX0=1;

EX1=1;

IT0=1;

IT1=1;

EA=1;

}

///////////////////////////////

voidINT0_1(void)interrupt0

{

k=0;

}

///////////////////////////////

voidINT1_1(void)interrupt2

{

k=1;

}

///////////////////////////////

voidmain()

{

init();

k=2;

while

(1)

{

if(k==0)

{

P1=0xff;

temp=0x01;

for(i=0;i<8;i++)

{

P1=~temp;

temp=temp<<1;

delay_ms(500);

}

}

elseif(k==1)

{

P1=0xff;

temp=0x80;

for(i=0;i<8;i++)

{

P1=~temp;

temp=temp>>1;

delay_ms(500);

}

}

else

{P1=0xff;}

}

}

第三个#include

#defineuintunsignedint

#defineucharunsignedchar

uchartemp;

uchari;

uchark;

//////////////////////////////

voiddelay_ms(uintt)

{

uchari;

while(t--)

{

for(i=0;i<110;i++)

{;;}

}

}

///////////////////////////////

voidinit()

{

EX0=1;

EX1=1;

IT0=1;//1跳延触发0低电平触发

IT1=1;

EA=1;

}

///////////////////////////////

voidINT0_1(void)interrupt0

{

k=0;

}

///////////////////////////////

voidINT1_1(void)interrupt2

{

k=1;

}

///////////////////////////////

voidmain()

{

init();

k=0;

while

(1)

{

P1=0xff;

if(k==0)

{temp=0x80;}

if(k==1)

{temp=0x01;}

for(i=0;i<8;i++)

{

P1=~temp;

if(k==0)

{temp=temp>>1;}

if(k==1)

{temp=temp<<1;}

delay_ms(2000);

}

}

}

第四个#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodeduan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

sbitwei=P2^7;

chark;

//////////////////////////////

voiddelay_ms(uintt)

{

uchari;

while(t--)

{

for(i=0;i<110;i++)

{;;}

}

}

///////////////////////////////

voidinit()

{

EX0=1;

EX1=1;

IT0=1;//1跳延触发0低电平触发

IT1=1;

EA=1;

wei=0;

}

///////////////////////////////

voidINT0_1(void)interrupt0

{

delay_ms(100);

k++;

if(k>9)

{

k=0;

}

P0=duan[k];

delay_ms

(2);

}

///////////////////////////////

voidINT1_1(void)interrupt2

{

delay_ms(100);

k--;

if(k<0)

{

k=9;

}

P0=duan[k];

delay_ms

(2);

}

///////////////////////////////

voidmain()

{

init();

P0=duan[0];

while

(1);

}

第五个#include

#defineuintunsignedint

#defineucharunsignedchar

sbitled=P2^7;

uchartemp;

uchari;

uchark;

//////////////////////////////

voiddelay_ms(uintt)

{

uchari;

while(t--)

{

for(i=0;i<110;i++)

{;;}

}

}

///////////////////////////////

voidinit()

{

EX0=1;

EX1=1;

IT0=1;//1跳延触发0低电平触发

IT1=1;

EA=1;

led=0;

}

///////////////////////////////

voidINT0_1(void)interrupt0

{

k=0;

}

///////////////////////////////

voidINT1_1(void)interrupt2

{

k=1;

}

///////////////////////////////

voidmain()

{

init();

k=2;

while

(1)

{

if(k==0)

{

temp=0x80;

}

elseif(k==1)

{

temp=0x01;

}

for(i=0;i<8;i++)

{

P0=((~temp)|0xc0);

if(k==0)

{

temp=temp>>1;

delay_ms(2000);

}

if(k==1)

{

temp=temp<<1;

delay_ms(2000);

}

}

}

}

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2