可能不是你想要的,但是你可以拿去改动
- #include <AT89X52.h>
- #include <intrins.h>
- #include <stdlib.h>
- #define TRUE 1
- #define FALSE 0
- bit bT0Flg = FALSE;
- //U2 595µÄÇý¶¯Òý½Å¶¨Òå
- sbit sbSHCP2 = P2^0;
- sbit sbDS2 = P2^1;
- sbit sbSTCP2 = P2^2;
- //U3 595µÄÇý¶¯Òý½Å¶¨Òå
- sbit sbSHCP3 = P2^3;
- sbit sbDS3 = P2^4;
- sbit sbSTCP3 = P2^5;
- //U4 595µÄÇý¶¯Òý½Å¶¨Òå
- sbit sbSHCP4 = P2^6;
- sbit sbDS4 = P2^7;
- sbit sbSTCP4 = P3^0;
- //U5 595µÄÇý¶¯Òý½Å¶¨Òå
- sbit sbSHCP5 = P3^1;
- sbit sbDS5 = P3^3;
- sbit sbSTCP5 = P3^4;
- //U6 595µÄÇý¶¯Òý½Å¶¨Òå
- sbit sbSHCP6 = P3^5;
- sbit sbDS6 = P3^6;
- sbit sbSTCP6 = P3^7;
- unsigned char temp2,temp3,temp4,temp5,temp6;
- bdata unsigned char sw; //붨Òå
- sbit sw0 = sw ^ 0;
- sbit sw1 = sw ^ 1;
- sbit sw2 = sw ^ 2;
- sbit sw3 = sw ^ 3;
- sbit sw4 = sw ^ 4;
- sbit sw5 = sw ^ 5;
- sbit sw6 = sw ^ 6;
- sbit sw7 = sw ^ 7;
- unsigned char code SEGtable[]=
- {
- 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
- };
- /*
- void Delay(unsigned int x)
- {
- unsigned char i;
- while(x--)
- {
- for(i=0;i<120;i++);
- }
- } */
- //595ÊäÈ뺯Êý2ºÅ
- void Input5952()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- temp2 <<= 1;
- sbDS2 = CY;
- sbSHCP2 = 1;
- _nop_();
- _nop_();
- sbSHCP2 = 0;
- }
- }
- //595Êä³öº¯Êý2ºÅ
- void Output5952()
- {
- sbSTCP2 = 0;
- _nop_();
- sbSTCP2 = 1;
- _nop_();
- sbSTCP2 = 0;
- }
- //595ÊäÈ뺯Êý3ºÅ
- void Input5953()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- temp3 <<= 1;
- sbDS3 = CY;
- sbSHCP3 = 1;
- _nop_();
- _nop_();
- sbSHCP3 = 0;
- }
- }
- //595Êä³öº¯Êý3ºÅ
- void Output5953()
- {
- sbSTCP3 = 0;
- _nop_();
- sbSTCP3 = 1;
- _nop_();
- sbSTCP3 = 0;
- }
- //595ÊäÈ뺯Êý4ºÅ
- void Input5954()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- temp4 <<= 1;
- sbDS4 = CY;
- sbSHCP4 = 1;
- _nop_();
- _nop_();
- sbSHCP4 = 0;
- }
- }
- //595Êä³öº¯Êý4ºÅ
- void Output5954()
- {
- sbSTCP4 = 0;
- _nop_();
- sbSTCP4 = 1;
- _nop_();
- sbSTCP4 = 0;
- }
- //595ÊäÈ뺯Êý5ºÅ
- void Input5955()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- temp5 <<= 1;
- sbDS5 = CY;
- sbSHCP5 = 1;
- _nop_();
- _nop_();
- sbSHCP5 = 0;
- }
- }
- //595Êä³öº¯Êý5ºÅ
- void Output5955()
- {
- sbSTCP5 = 0;
- _nop_();
- sbSTCP5 = 1;
- _nop_();
- sbSTCP5 = 0;
- }
- //595ÊäÈ뺯Êý6ºÅ
- void Input5956()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- temp6 <<= 1;
- sbDS6 = CY;
- sbSHCP6 = 1;
- _nop_();
- _nop_();
- sbSHCP6 = 0;
- }
- }
- //595Êä³öº¯Êý6ºÅ
- void Output5956()
- {
- sbSTCP6 = 0;
- _nop_();
- sbSTCP6 = 1;
- _nop_();
- sbSTCP6 = 0;
- }
- void initrand(void)
- {
- unsigned char counter=0;
- P1 = 0xff;
- sw = P1;
- counter = 0; //ͳ¼Æ¿ª¹Ø±ÕºÏµÄÊýÂë
- if(sw0 == 1)
- {
- counter++;
- }
- if(sw1 == 1)
- {
- counter++;
- }
- if(sw2 == 1)
- {
- counter++;
- }
- if(sw3 == 1)
- {
- counter++;
- }
- if(sw4 == 1)
- {
- counter++;
- }
- if(sw5 == 1)
- {
- counter++;
- }
- if(sw6 == 1)
- {
- counter++;
- }
- if(sw7 == 1)
- {
- counter++;
- }
- srand(counter); //³õʼ»¯ÖÖ×Ó
- }
- void Timer0Init(void) //¶¨Ê±Æ÷0³õʼ»¯º¯Êý
- {
- TMOD = 0x01; //ÉèÖÃT1¹¤×÷·½Ê½
- TH0 = 0x00;
- TL0 = 0x0C; //100ms¶¨Ê±
- ET0 = 1; //¿ªÆô¶¨Ê±Æ÷0ÖжÏ
- // TR0 = 1; //Æô¶¯¶¨Ê±Æ÷
- }
- void Timer0Deal(void) interrupt 1 using 1 //¶¨Ê±Æ÷0Öжϴ¦Àíº¯Êý
- {
- ET0 = 0; //Ê×ÏȹرÕÖжÏ
- TH0 = 0x00; //È»ºóÖØÐÂ×°ÈëÔ¤ÖÆÖµ
- TL0 = 0x0C;
- ET0 = 1; //´ò¿ªT0ÖжÏ
- bT0Flg = TRUE; //¶¨Ê±Æ÷Öжϱê־λ
- }
- EX_INT0() interrupt 0 using 1 //ÍⲿÖжÏ0·þÎñº¯Êý
- {
- if(TR0 == 1) //Åжϵ±Ç°¶¨Ê±¼ÆÊýÆ÷µÄ״̬
- {
- TR0 = 0;
- }
- else
- {
- TR0 = 1;
- initrand(); //³õʼ»¯ÖÖ×Ó
- }
- }
- void main()
- {
- unsigned int randdata = 0;
- unsigned char wdata,qdata,baidata,sdata,gdata;
- Timer0Init(); //³õʼ»¯Ê±ÖÓ
- IT0 = 1; //ÉèÖÃÍⲿÖжÏ0´¥·¢·½Ê½ÎªµÍÂö³å
- EX0 = 1; //ʹÄÜÍⲿÖжÏ0
- EA = 1; //´ò¿ª´®¿ÚÖжϱêÖ¾
- while(1)
- {
- while(bT0Flg==FALSE); //µÈ´ýÑÓʱ±ê־λ
- bT0Flg=FALSE;
- randdata = 2 * rand(); //»ñµÃËæ»úÊý
-
- wdata = randdata/10000; //Êä³öÍòλ
- temp2 = SEGtable[wdata];
- Input5952();
- Output5952();
-
- qdata = randdata%10000/1000; //Êä³öǧλ
- temp3 = SEGtable[qdata];
- Input5953();
- Output5953();
- baidata = randdata%1000/100; //Êä³ö°Ùλ
- temp4 = SEGtable[baidata];
- Input5954();
- Output5954();
- sdata = randdata%100/10; //Êä³ö10λ
- temp5 = SEGtable[sdata];
- Input5955();
- Output5955();
- gdata = randdata%10; //Êä³ö¸öλ
- temp6 = SEGtable[gdata];
- Input5956();
- Output5956();
- }
- }
复制代码 |