久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2897|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教,隨機(jī)排布函數(shù)的設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:50562 發(fā)表于 2013-5-26 14:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
隨機(jī)排布:任一順序的0~9的排列,如:8,3,1,5,4,0,9,7,6,2
用單片機(jī)生成一個(gè)隨機(jī)排列,然后輸出到P2口。
請(qǐng)大神指點(diǎn)啊
程序(有問題)如下:
#include<stdio.h>
#include<REG52.H>
unsigned short rtab[10] = {3, 9, 4, 1, 5, 0, 7, 8, 2, 6};
unsigned short divider[9] = {2, 3, 5, 7, 11, 13, 17, 19, 23};   
unsigned short skip[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};      //skip是在rtab中的偏移
unsigned short temp[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};      //暫存skip
unsigned short result[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0};   //存放隨機(jī)排布
unsigned int count=1;
void test()        //如果count能夠被divider整除,那么skip++。
{
int i;
for(i=0;i<=8;i++)
{
  if(count%divider==0)
  {
   if(skip>=9-i)   //skip[]的進(jìn)制分別是10,9,8,.....,3,2
    skip=0;
   else
    skip++;
   break;
  }
}
}
void timer1_int() interrupt 3 using 2     //計(jì)時(shí)器1中斷程序,令count非溢出地加1
{
if(count>=65531)
  count=1;
else
  count++;
test();
}
void swap(unsigned short x,unsigned short y)   //將x,y對(duì)換
{
unsigned short tep;
tep=x;
x=y;
y=tep;
}
void refresh()                     //刷新,產(chǎn)生隨機(jī)排布result[10];
{
//TR1 = 0;
int i=0;
for(i=0; i<=8; i++ )
  temp=skip;
//TR1=1;
   
for(i=0;i<=8;i++)                        //問題:該循環(huán)中,swap()不能實(shí)現(xiàn)rtab[temp]與rtab[9-i]的對(duì)換
{
  result=rtab[temp];
  swap(rtab[temp],rtab[9-i]);  //保證下次取到的數(shù)rtab[temp[i+1]]不與已經(jīng)取到的數(shù)result[0~i]重復(fù)
}
result=rtab[0];
}
void display()                  //將result數(shù)組的內(nèi)容依次輸出到P2口                    
{
int i;
for(i=0; i<=9;i++ )
{
  P1=i;
  P2=result;
}
}
void int0_service() interrupt 2 using 3    //有鍵被按下時(shí),調(diào)用外部中斷1程序
{
switch(P1)
{
  case'0':
  case'1':
  case'2':
  case'3':
  case'4':
  case'5':
  case'6':
  case'7':
  case'8':
  case'9':P2=P1;/*save(P1);*/refresh();display();break;
// case'c':clear();break;                                 //清除一位
  case'r':refresh();display();break;                     //刷新
// case'e':enter();P2=enter;break;                       //確定
  default:/*P2=error;*/break;                          //顯示出錯(cuò)
}
}

void main()
{

TMOD |= 0x20;             //timer 1, mode 2, 8-bit reload
TH1   = 221;              //初始值
EA    = 1;                //開所有中斷
ET1   = 1;                //開計(jì)時(shí)器1溢出中斷
EX1   = 1;                //開外部中斷1
PX1   = 1;                //設(shè)外部中斷1為高優(yōu)先級(jí)
PT1   = 0;                //設(shè)計(jì)時(shí)器1中斷為低優(yōu)先級(jí)
TR1   = 1;                //計(jì)時(shí)開始

    while(1)                  //當(dāng)按下確定鍵時(shí),開始程序
{
  if(P1=='e')
   break;
}
refresh();               
while(1)
{
  display();
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区av | 精品欧美一区二区在线观看欧美熟 | 国产一区二区三区在线 | 男女视频在线观看免费 | 国产ts人妖系列高潮 | www.se91| 国产精品一区二区在线免费观看 | 一级一级一级毛片 | 亚洲女人的天堂 | 亚洲a一区二区 | aa级毛片毛片免费观看久 | 国产成人精品一区二区三区四区 | 免费欧美视频 | 99久热在线精品视频观看 | 欧美日韩一区二区视频在线观看 | 国产一区二区三区不卡av | 亚洲免费在线观看视频 | 九九视频在线观看 | 男女国产网站 | 久久久久久久久久爱 | 中文字幕1区2区 | 欧美日韩午夜精品 | 中文字幕高清一区 | 国产资源在线播放 | 欧美在线视频一区二区 | 爱爱视频在线观看 | 一级网站 | 精品国产一区二区三区久久狼黑人 | 久久精品日产第一区二区三区 | 宅女噜噜66国产精品观看免费 | 成人在线视频一区二区三区 | 91在线一区二区三区 | 91久久久久 | 91在线精品一区二区 | 黄色大片网 | 麻豆精品一区二区三区在线观看 | 国产高清在线 | 国产黄色一级电影 | 国产一区| 欧美一区二区免费在线 | 日韩av免费在线观看 |