八路抢答器设计论文(4)

2019-04-16 23:42

unsigned int i; i=500; while(i--); }

int keyscan()//键盘扫描 {

unsigned char read,recode,keyvalue; P2=0xf0; read=P2; if(read!=0xf0) { delay(); if(read!=0xf0) { P2=0x0f; recode=P2;

keyvalue=read+recode; return keyvalue; } } return 0; }

void display()//显示 { unsigned

char code Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管断码表 switch(num) {

case 0:{x=0;y=0;break;} case 1:{x=1;y=0;break;}

- 15 -

case 2:{x=2;y=0;break;} case 3:{x=3;y=0;break;} case 4:{x=4;y=0;break;} case 5:{x=5;y=0;break;} case 6:{x=6;y=0;break;} case 7:{x=7;y=0;break;} case 8:{x=8;y=0;break;} case 9:{x=9;y=0;break;} case 10:{x=0;y=1;break;} } p3_4=0; p3_5=0; P0=Table[x]; p3_4=0; p3_5=1; delay(); p3_4=0; p3_5=0; P0=Table[y]; p3_4=1; p3_5=0; delay(); }

unsigned char decode() //解码按键 {

switch(key) {

case 0xb7:return 1; case 0xbb:return 2; case 0xbd:return 3; case 0xbe:return 4;

- 16 -

case 0xd7:return 5; case 0xdb:return 6; case 0xdd:return 7; case 0xde:return 8; } return 0; }

void main() { while(1) {

while(start==0)//P3.0自锁开关按下,程序跳出循环,开始初始化中断{ num=10; P1=LED_T[9]; display(); if(p3_0==0) start=1; } EA=1; TMOD=0x01; TH0=0xd8; TL0=0xf0; ET0=1; TR0=1; count=100; num=9;

while(flag==0&&p3_0==0)//flag=0且P3.0按下时执行此循环 {

if(flagl==1) //若中断里检测到按键,P1口对应LED亮起

- 17 -

P1=LED_T[num-1]; display(); } start=0; flag=0; flagl=0; } }

void timer_1(void) interrupt 1 { TH0=0xD8; TL0=0xf0;

if(p3_0==1) //中断途中抬起P3.0自锁开关,关中断 { TR0=0; flag=0; }

key=keyscan();//检测到按键,解码按键至对应case,并且显示对应数字,关中断,防止再次进入中断,保证锁住状态 if(key!=0) {

num=decode(); display(); TR0=0; flag=0; flagl=1; }

count--; //10秒倒计时 if(count==0) {

- 18 -

num--; if(num==0) { TR0=0; flag=0; }

count=100; } }

- 19 -


八路抢答器设计论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“拆分+联想+串联”记忆法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: