我想搞個抽題的 程序通過數碼管顯示題號
1-24隨機數字 按一個鍵抽一個數n
下次再抽個數m
要保證抽過的數 不再抽到
我寫的程序但是抽過的數還會顯示出來
#include <AT89X51.h>
#define unchar unsigned char
#define unint unsigned int
sbit key1=P1^4;
sbit key2=P1^7;
unint nb[];
unchar numb,du,we,u,c=0,ui,x=24;
unchar disnum,dis,o;
unchar code tabdu[]={0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x98, //編碼定義
0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f};
unchar code tabwe[]={0xff,0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
void xianshi(unint,unint);
void yanshi(unint);
void chuandi();
void xianshi2(unint,unint);
void main()
{
unint nb[24]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24};
while(1)
{
chuandi();
EA=1;
ET1=1;
TMOD=0x10; //工作模式
TH1=(65536-65000)/256; // fuzhi 高八位
TL1=(65536-65000)%256; //低八位
TR1=1;
do
{
if(numb==1)
{
numb=0;
if(disnum==24)
disnum=0;
disnum++;
}
xianshi(disnum%100/10,disnum%10);
}
while(key1!=0);
//if(&&)
//chuandi();
do
{
TR1=0;
xianshi(nb[disnum]%100/10,nb[disnum]%10);
}
while(key2!=0);
for(o=disnum;o<24-1;o++) //刪除出現過的數
{
nb[o]=nb[o+1];
}
}
}
void time1() interrupt 3
{
TH1=(65536-65000)/256; // fuzhi 高八位
TL1=(65536-65000)%256;
numb++;
}
void chuandi()
{
unchar io;
io=1;
}
void xianshi(unint shi,unint ge)
{
P0=tabdu[shi];
P2=0xfd;
yanshi(5);
P0=tabdu[ge];
P2=0xfb;
yanshi(5);
}
void xianshi2(unint shi,unint ge)
{
P0=tabdu[shi];
P2=0xf7;
yanshi(5);
P0=tabdu[ge];
P2=0xef;
yanshi(5);
}
void yanshi(unint x)
{
unint a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}