完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在做键盘切换数码管时钟和流水灯花样的练习 类似于音乐播放器的切歌功能 麻烦大家看下这段代码 为什么键盘外部中断无法实现?
#include #include #define uint unsigned int #define uchar unsigned char ***it dula=P2^6; ***it wela=P2^7; ***it s1=P3^4; ***it s2=P3^5; uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar code table2[]={0x7e,0xbd,0xdb,0xe7}; uchar code table3[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; uchar code table4[]={0xfc,0xf3,0xcf,0x3f,0xcf,0xf3,0xfc}; uchar code table5[]={0xfe,0xf1,0xef,0x7f,0x8f,0xf1,0xfe}; uchar code table6[]={0xfe,0xfb,0xef,0xbf,0xfd,0xf7,0xdf,0x7f}; uchar code table[]={ //数码管显示编码 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar a,i,j,s1num,num,shi,fen,miao; void delay(uint z) //延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(void) //数码管时钟显示子程序 { dula=1; //显示秒个位 P0=table[miao/10]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(1); dula=1; //显示秒十位 P0=table[miao%10]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(1); dula=1; //显示分个位 P0=table[fen/10]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; //显示分十位 P0=table[fen%10]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); dula=1; //显示时个位 P0=table[shi/10]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; //显示时十位 P0=table[shi%10]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); } void huayang1() //花样1 { for(i=0;i<8;i++) { P1=table1[i]; delay(500); P1=table1[7-i]; delay(500); } } void huayang2() //花样2 { for(j=0;j<3;j++) { for(i=0;i<8;i++) { P1=table1[i]; delay(200); } for(i=0;i<8;i++) { P1=table1[7-i]; delay(200); } } P1=0xff; } void huayang3() //花样3 { for(i=0;i<10;i++) { P1=~P1; delay(200); } } void huayang4() //花样4 { for(i=0;i<4;i++) { P1=table2[i]; delay(200); } for(i=0;i<4;i++) { P1=table2[3-i]; delay(200); } } void huayang5() //花样5 { for(i=0;i<8;i++) { P1=table3[i]; delay(200); } for(i=0;i<8;i++) { P1=table3[7-i]; delay(200); } P1=0xff; } void huayang6() //花样6 { for(i=0;i<7;i++) { P1=table4[i]; delay(200); } } void huayang7() //花样7 { a=0xfe; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) { P1=a; delay(200); a=_crol_(a,1); } a=_crol_(a,j); delay(200); a=a<<1; } } void huayang8() //花样8 { for(j=0;j<3;j++) { P1=0x55; delay(200); P1=0xaa; delay(200); } } void huayang9() //花样9 { for(i=0;i<7;i++) { P1=table5[i]; delay(500); } } void huayang10() //花样10 { for(j=0;j<3;j++) { for(i=0;i<8;i++) { P1=table6[i]; delay(500); } } } void main() //主程序 { shi=0; fen=0; miao=0; TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; EX0=1; IT0=1; ET0=1; TR0=1; while(1) { if(s1num!=0) { switch(s1num) { case 1: display(); break; case 2: huayang1(); break; case 3: huayang2(); break; case 4: huayang3(); break; case 5: huayang4(); break; case 6: huayang5(); break; case 7: huayang6(); break; case 8: huayang7(); break; case 9: huayang8(); break; case 10:huayang9(); break; case 11:huayang10(); break; } } delay(3000); } } void int0() interrupt 0 { if(s1==0) { delay(1); if(s1==0) { s1num++; if(s1num==12) { s1num=1; } while(!s1); } } } void timer() interrupt 1 //定时器中断 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num++; if(num==20) { num=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } } } } } |
|
相关推荐
2 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 10:47 , Processed in 0.556667 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号