
最终实现:按任意键反向,只是必须等到一轮结束以后。
程序如下:
#include #define uchar unsigned char sbit ko1=P3^6; sbit ko2=P3^7; sbit ki1=P0^5; sbit ki2=P0^6; sbit ki3=P0^7; tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff}; tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f}; tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f}; void Delay900ms() { } void Delay10ms() { { } while (--i); } void flick() { } void main() { if(y==0) Delay10ms(); if(!ki1||!ki2||!ki3) b+=1; } } 实验二 定时器时钟实验 最终实现:上电后设置定时时间,按2号键时间+1,按3号键时间+100;按1号键开始工作;时间到偶小灯闪烁3下,回到初始状态。 程序如下: #include #define uchar unsigned char #define uint unsigned int sbit ko1=P3^6; sbit ko2=P3^7; sbit ki1=P0^5; sbit ki2=P0^6; sbit ki3=P0^7; sfr P1M1=0x91; sfr P1M0=0x92; tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; tab2[]={0xf7,0xfb,0xfd,0xfe}; tab3[4]={0}; uint a=0; uint b=0; void Delay100ms() { } void Delay5ms() { } void flick() { } void show() { char j; } void interrupt_timer1() interrupt 3 { } void main() { P1=tab1[tab3[m]]; } 实验三 双机通信实验 最终实现:两机连接后按任意键可在两外的机子上显示该键编号。 程序如下: #include #define uchar unsigned char #define uint unsigned int sfr P1M1=0x91; sfr P1M0=0x92; sbit ko1=P3^6; sbit ko2=P3^7; sbit ki1=P0^5; sbit ki2=P0^6; sbit ki3=P0^7; sbit scran=P0^3; tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar a,b,n; void Delay5ms() { } void main() { } 实验四 交通灯实验 最终实现:上电之后进行初始设置,2号键增加红绿灯时间,3号键增加黄灯时间,初始时间都为零;1号键开始工作;按3、4、5任意键急停,按3、4、5任意键继续(从第一步开始。 程序如下: #include #define uchar unsigned char #define uint unsigned int void led_show(); uchar m,n; uint a=0; uint b=0; uchar k,c,d,f,g; sfr P1M1=0x91; sfr P1M0=0x92; sbit ko1=P3^6; sbit ko2=P3^7; sbit ki1=P0^5; sbit ki2=P0^6; sbit ki3=P0^7; sbit dh=P2^2; sbit dl=P2^0; sbit dy=P2^1; sbit xh=P3^2; sbit xl=P2^6; sbit xy=P2^7; sbit nh=P2^5; sbit nl=P2^3; sbit ny=P2^4; sbit bh=P3^5; sbit bl=P3^3; sbit by=P3^4; tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; tab2[]={0xf7,0xfb,0xfd,0xfe}; tab3[4]={0}; void show() { case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break; case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break; case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break; case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break; default:break; } void Delay5ms() { } void interrupt_timer1() interrupt 3 { } void det() { } void led_show() { 东西通 黄 南北通 黄 } void main() { } while(!ki1); } if(!ki2) { } if(!ki3) { n+=1; } c=0; } }
