基础资料备份
彼岸mj吧
全部回复
仅看楼主
level 9
2009年07月15日 19点07分 1
level 9
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#include <graphics.h>
#define LEN sizeof(struct rainDrop)
int rainDropNumber=60;
int downSpeed=20;
struct rainDrop *head;
struct rainCircle
{
int x;
int y;
int r;
int curR;
int rainCircleStep;
};
struct rainDrop
{
int startX;
int startY;
int endY;
int curX;
int curY;
int rainColor;
int rainLineStep;
int rainLineLength;
int status;
struct rainCircle water;
struct rainDrop *next;
};
void initgraphics(void)
{
int gmode,gdriver;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"");
}
struct rainDrop *creatDrop(void)
{
struct rainDrop *p;
p=(struct rainDrop *)malloc(LEN);
p->startX=rand()%640;
p->startY=rand()%430;
p->endY=430+rand()%50;
p->curX=p->startX;
p->curY=p->startY;
p->rainLineStep=8;
p->rainColor=rand()%15+1;
p->rainLineLength=rand()%10+10;
p->status=0;
p->water.x=p->startX;
p->water.y=p->endY;
p->water.r=rand()%40;
p->water.curR=rand()%2;
p->water.rainCircleStep=rand()%2+1;
p->next=NULL;
return(p);
}
void recreatDrop(struct rainDrop *p)
{
p->startX=rand()%640;
p->startY=rand()%430;
p->endY=430+rand()%50;
p->curX=p->startX;
p->curY=p->startY;
p->rainLineStep=8;
p->rainColor=rand()%15+1;
p->rainLineLength=rand()%10+10;
p->status=0;
p->water.x=p->startX;
p->water.y=p->endY;
p->water.r=rand()%40;
p->water.curR=rand()%2;
p->water.rainCircleStep=rand()%2+1;
}
void creatRain(void)
{
struct rainDrop *p1,*p2;
int i;
p1=p2=creatDrop();
head=p1;
for(i=0;i<rainDropNumber;i++)
{
p2=creatDrop();
p1->next=p2;
p1=p2;
}
}
void updateRainLineData(struct rainDrop *p)
{
if(p->rainLineStep%5==0)
p->rainLineStep++;
p->curY+=p->rainLineStep;
p->startY=p->curY-p->rainLineLength;
}
void drawRainLine(struct rainDrop *p)
{
setcolor(p->rainColor);
line(p->startX,p->startY,p->curX,p->curY);
}
void clearRainLine(struct rainDrop *p)
{
setcolor(BLACK);
line(p->startX,p->startY,p->curX,p->curY);
}
void rainDropDown(struct rainDrop *p)
{
if(p->curY>=p->endY)
{
clearRainLine(p);
p->status=1;
}
else
{
clearRainLine(p);
updateRainLineData(p);
drawRainLine(p);
}
}
void updateRainCircleData(struct rainDrop *p)
{
p->water.curR+=p->water.rainCircleStep;
}
void drawRainCircle(struct rainDrop *p)
{
setcolor(p->rainColor);
circle(p->water.x,p->water.y,p->water.curR);
}
void clearRainCircle(struct rainDrop *p)
{
setcolor(BLACK);
circle(p->water.x,p->water.y,p->water.curR);
}
void fallToWater(struct rainDrop *p)
{
if(p->water.curR>=p->water.r)
{
clearRainCircle(p);
recreatDrop(p);
}
else
{
clearRainCircle(p);
updateRainCircleData(p);
drawRainCircle(p);
}
}
void rain(void)
{
struct rainDrop *p;
p=head;
while(!kbhit())
{
if(p==NULL)
p=head;
else
{
if(p->status==0)
rainDropDown(p);
else
fallToWater(p);
}
delay(downSpeed);
p=p->next;
}
}
void clearAll(void)
{
struct rainDrop *p,*pf;
p=head;
while(p!=NULL)
{
pf=p;
p=p->next;
free(pf);
}
closegraph();
}
main()
{
printf("Input rainDrop Number:");
scanf("%d",&rainDropNumber);
printf("Input down speed:");
scanf("%d",&downSpeed);
randomize();
initgraphics();
creatRain();
rain();
clearAll();
}
2009年07月15日 19点07分 2
level 9
#include "config.h"
#define BEEPCON 1<<7
void __irq IRQ_Eint3(void)
{ uint32 i;
  i=IO0SET;
  if((i&BEEPCON)==0)
 { 
IO0SET=BEEPCON;
       }
      else
      {
        IO0CLR=BEEPCON;
      }
      EXTINT=1<<3;
      VICVectAddr=0;
}
int main(void)
{  PINSEL1=3<<8;
      IO0DIR=BEEPCON;
      EXTMODE=1<<3;
      EXTPOLAR=0x00;
      VICIntSelect=0x000000000;
      VICVectCntl0=0x20|17;
      VICVectAddr0=(int)IRQ_Eint3;
      EXTINT=1<<3;
      VICIntEnable=1<<17;
      while(1);
      return(0); 
 }
2009年07月15日 19点07分 3
level 9
#include "config.h"
#define BEEPCON 1<<7
void __irq IRQ_Time0&1(void)
{
   if((IO0SET&BEEPCON)==0)
   {  IO0SET=BEEPCON;
}
else
    {  IO0CLR=BEEPCON;
     }
    T0IR=0x01;
    VICVectAddr=0x00;
        if((IO1SET&BEEPCON)==0)
    { IO1SET=BEEPCON;
     }
else
    {  
IO1CLR=BEEPCON;
    }
     T1IR=0x01;
     VICVectAddr=0x00
}
void Time0&1Init (void)
{
    Fcclk=Fosc*4=11.0592MHz*4=44.2368MHz
    Fpclk=Fcclk/4=44.2368MHz/4=11.0592MHz
    T0PR = 99;
    T0MCR = 0x03; 
    T0MR0 = 110592/2; 
    T0TCR = 0x03;
    T0TCR = 0x01; 
 
    T1PR = 99; 
    T1MCR = 0x02;
    T1MR0 = 110592/2; 
    T1EMR = 0x30; 
T1TCR = 0x03;
    T1TCR = 0x01;
    VICIntSelect = 0x00; 
    VICVectCntl0 = 0x24; 
    VICVectAddr0 = (uint32)IRQ_Exception; 
    VICIntEnable = 0x00000010; 
}
int main (void)

      PINSEL0=0x00000000;
      IO0DIR=BEEPCON;
      Time0Init();
PINSEL1=0x00000000;
      IO1DIR=BEEPCON;
      Time1Init();
      while(1);
      return 0;
}
2009年07月15日 19点07分 4
level 9
TIMER   EQU 01H
        ORG 0
        LJMP 0F30H
        ORG 000BH
        LJMP INT_T0
        ORG 0F30H
        LJMP JG4B6
        ORG 04B6H
JG4B6:  MOV SP,#53H
        MOV TMOD,#01H
        MOV TL0,#00H
        MOV TH0,#4BH
        MOV R0,#00H
        MOV TIMER,#20H
        MOV SCON,#00H
        CLR TI
        CLR RI
        SETB TR0
        SETB ET0
        SETB EA
        SJMP $
INT_T0: PUSH ACC
        PUSH PSW
        CLR EA
        CLR TR0
        MOV TL0,#00H
        MOV TH0,#4BH
        SETB TR0
        DJNZ TIMER,EXIT
        MOV TIMER,#20H
        MOV DPTR,#CDATA
        MOV A,R0
        MOVC A,@A+DPTR
        CLR TI
        CPL A
        MOV SBUF,A
        INC R0
        CJNE R0,#0AH,EXIT
        MOV R0,#00H
EXIT:   SETB EA
        POP PSW
        POP ACC
        RETI
CDATA:  DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
        END
2009年07月15日 19点07分 5
level 9
#include<stdio.h>
     #define port 0x3f8           
     Int ch[15];
     Main()
     {  
        Int a;
        
Int i,j;
Int b[6]={88,15,38,26,20,0}
Char c;
Clrscr()
Outportb(port
+3
,0x80);     
Outportb(port,0x0C);
Outportb(port+1,0x00);
Outportb(port+3,0x03);
Outportb(port+1,0x00);
Inportb(port+5);    /
for(;;){
        printf(“\t\tsned data or receive data:(s or r?)\n\n\n”);
        c=getchar();
        swithch©{
        case’s’:
        case’S’:{
        while(!(inportb(port+5)&0x20));
outportb(port,0x01; 
for(i=0;i<6;i++){
a=b[i];
while(!(inportb(port+5)&0x20))delay(100);
outportb(port,a);   
printf(“%d\n”,a);
while(!(inportb(port+5)&1))
ch[i]=import(port);
                   }
delay(10);
for(j=0;j<8;j++); printf(“\n%d\n”,ch[j]);
getchar();
break;
       }
Case’r’:
Case’S’:{
while(!(inportb(port+5)&0x20));
outportb(port,0x02; 
for(j=0;j<9;j++){
while(!(inportb(port+5)&1));
ch[j]=inportb(import);
                     }
for(j=0;j<9;j++); printf(“\n%d\n”,ch[j]);
getchar();
break;
            }
          }
        }
      }
2009年07月15日 19点07分 6
level 9
#pragma SRC
#include <stdio.h>
#include<reg51.h>
#define TRUE    1
#define FALSE   0
#define LampComm P0_0                       
#define SelectComm1 P0_1
#define SelectComm2 P0_2
#define SelectComm3 P0_3
#define SelectComm4 P0_4
#define SelectComm5 P0_5
#define SelectComm6 P0_6
#define MACHINECOMM_OK 0x11
#define MACHINECOMM_RET 0x88
#define MACHINECOMM_DATAHEAD 0x5a
#define MACHINECOMM_DATAEND  0xa5
#define DELAY_VALUE 3
s丨bit  P0_0=P0^0;
s丨bit  P0_1=P0^1;
s丨bit  P0_2=P0^2;
s丨bit  P0_3=P0^3;
s丨bit  P0_4=P0^4;
s丨bit  P0_5=P0^5;
s丨bit  P0_6=P0^6;
s丨bit  P0_7=P0^7;
s丨bit  P1_0=P1^0;
s丨bit  P1_1=P1^1;
s丨bit  P1_2=P1^2;
s丨bit  P1_3=P1^3;
s丨bit  P1_4=P1^4; 
s丨bit  P1_5=P1^5;
s丨bit  P1_6=P1^6;
s丨bit  P1_7=P1^7;
s丨bit  P2_0=P2^0;
s丨bit  P2_1=P2^1;
s丨bit  P2_2=P2^2;
s丨bit  P2_3=P2^3;
s丨bit  P2_4=P2^4;
s丨bit  P2_5=P2^5;
s丨bit  P2_6=P2^6;
s丨bit  P2_7=P2^7;
s丨bit  P3_2=P3^2;
s丨bit  P3_3=P3^3;
bit EvRcv=FALSE;                      
unsigned char rcvdata=0;
void send (char *temp,int j);
void initial (void);
void delay (short i);
void main(void)
{
  unsigned char datacomm[6],datarecv[6];
  unsigned char count=0,datahand;
  datahand= MACHINECOMM_RET;
  datacomm[0]= MACHINECOMM_DATAHEAD;
  datacomm[5]= MACHINECOMM_DATAEND;
datacomm[1]= ‘w’;
datacomm[2]= ‘o’;
datacomm[3]=’r’;
datacomm[3]=’k’;
initial();
  SelectComm6=1;
  While(1)
  {
    If (EvRcv)
    {  
       If(rcvdata== MACHINECOMM_OK)
       {  LampComm=TRUE;
       delay(DELAY_VALUE);
       LampComm=FALSE;
       }

2009年07月15日 19点07分 7
level 9
      EvRcv=FALSE;
      beak;
   }
   send(&datahand,1);           
   break;
 }
 for(;;){while(1)
 {if (EvRcv) {
     datarecv[count]=rcvdata;
     count++;
     EvRcv=FALSE;
}
If (count==5) break;
}
If(datarecv[0]==MACHINECOMM_DATAHEAD&&datarecv[5]==MACHINECOMM_DATAEND)
     Send (datacomm,6);
}
}
void  initial()
{
   IP=0x10;
   IE=0x97;
   TCON=0x05;
   TMOD=0x20H;
   PCON=80H;
   SCON=50H;
   TH1=0xF3H;     
   TL1=0xF3H;
   PCON=0x80|PCON;
   TR1=1;              
   SelectComm6=0;
SelectComm5=0;
SelectComm4=0;
SelectComm3=0;
SelectComm2=0;
SelectComm1=0;
}
void send (unsigned char *temp,int j)
{   
    Int i=0;
LampComm=TRUE;
EA=0;
for (i=0;i<=j-1;i++)
{
   ACC=* (temp+i);
   TB=P;
   S丨BUF=ACC;
   While (TI==0);
   TI=0;
}
EA=1;
LampComm=FALSE;
}
Void Rcv_INT(void) interrup1
{
    LampComm=TRUE;
    If (RI)
    {
       ACC=S丨BUF         
       If (P==B8)
       {
          Rcvdata=ACC;
          Evrcv=TRUE;
       }
       RI=0;
    }
    LampComm=FALSE;
}
Void delay (int i)
{
   Int j=0;
   I=i*DELAY_VALUE;
   While (j<i) j++;
}
2009年07月15日 19点07分 8
level 9
DATA SEGMENT
  ORG 3000H
TAB  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
BUF  DB   01H,02H,03H,04H         
SEL  DB   0EOH,0D0H,0B0H,070H     
DATA ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV AL,89H               
       OUT 63,AL
       MOV CX,4
       LEA SI,SEL
       LEA DI,BUF
SHOW: MOV AL,[SI]
       OUT 60H,AL
       MOV AL,[DI]                
       MOV BX,OFFSET TAB
       XLAT TAB
       OUT 61H,AL
       CALL DELAY
       INC SI
       INC DI
       LOOP SHOW

DELAY: PUSH AX                   
       PUSH CX
       MOV CX,0040H
T1:    MOV AX,0300H
T2:    DEC AX
       JNZ T2
       LOOP T1
       POP CX
       POP AX
       RET

CODE ENDS
     END START
2009年07月15日 19点07分 9
level 9
DATA SEGMENT
  ORG 3000H
TAB  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H
SEL  DB  07H,0BH,0BH,0EH
VAR1 DB 3FH,3FH,3FH,3FH,3FH      
DATA ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV AL,89H                          
       OUT 63H,AL
CHECK: MOV AL,0                            
       OUT 61H,AL
       IN  AL,62H
       AND AL,18H
       CMP AL,18H
       JNZ KEY
       CALL DISP
       JMP  CHECK
KEY:   CALL DELAY
       IN AL,62H
       AND AL,18H
       CMP AL,18H
       JNZ KEY11
       JMP CHECK
KEY11: MOV AL,07H                          
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY12
       CALL KEY6
       JMP SLACK   
KEY12: TEST AL,10H
       JNZ  KEY21
       CALL KEY1
       JMP  SLACK  
KEY21: MOV AL,0BH
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY22
       CALL KEY4
       JMP SLACK  
KEY22: TEST AL,10H
       JNZ  KEY31
       CALL KEY3

2009年07月15日 20点07分 10
level 9
       JMP  SLACK  
KEY31: MOV AL,0DH
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY32
       CALL KEY2
       JMP SLACK   
KEY32: TEST AL,10H
       JNZ  KEY41
       CALL KEY5
       JMP  SLACK 
KEY41: MOV AL,0EH
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY42
       CALL  KEY0
       JMP SLACK   
KEY42: TEST AL,10H
       JNZ  KEYOVER
       CALL KEY7
KEYOVER:JMP  SLACK 

;---------------------------------
KEY0: CALL LP1                                  
       MOV AL,3FH
       MOV [SI+3],AL
       CALL DISP
       RET
;---------------------------------
KEY1: CALL LP1                                 
       MOV AL,06H
       MOV [SI+3],AL
       CALL SHOW
       RET
;----------------------------------
KEY2: CALL LP1                                 
       MOV AL,5BH
       MOV [SI+3],AL
       CALL DISP
       RET 
;-----------------------------------
KEY3: CALL LP1                                 

2009年07月15日 20点07分 11
level 9
       MOV AL,4FH
       MOV [SI+3],AL
       CALL DISP
       RET 
;-----------------------------------
KEY4: CALL LP1                                 
       MOV AL,66H
       MOV [SI+3],AL
       CALL DISP
       RET 
;-------------------------------------
KEY5: CALL LP1                                 
       MOV AL,6DH
       MOV [SI+3],AL
       CALL DISP
       RET 
;--------------------------------------
KEY6: CALL LP1                                  
       MOV AL,7DH
       MOV [SI+3],AL
       CALL DISP
       RET 
;-------------------------------------
KEY7: CALL LP1                                  
       MOV AL,07H
       MOV [SI+3],AL
       CALL DISP
       RET 
;----------------------------------------
LP1: MOV  CX,0003H                          
     LEA SI,VAR1 
LP2: MOV AL,[SI+2]
     MOV [SI+3],AL
     DEC SI
     LOOP LP2
     RET
;-----------------------------------------
DISP: LEA SI,SEL                                       

2009年07月15日 20点07分 12
level 9
      LEA DI,VAR1 
      MOV DL,[DI+3]
      CMP DL,3FH
      JNZ DIR3
      MOV DL,[DI+2]
      CMP DL,3FH
      JNZ DIR2
      MOV DL,[DI+1]
      CMP DL,3FH
      JNZ DIR1
      JNZ DIR0
DIR3: MOV CX,0004H
      JMP DIR
DIR2: MOV CX,0003H
      JMP DIR
DIR1: MOV CX,0002H
      JMP DIR
DIR0: MOV CX,0001H
DIR:  MOV AL,[SI]
      OUT 61H,AL
      MOV AL,[DI]
      OUT 60H,AL
      CALL DELAY
      INC SI
      INC DI
      LOOP DIR
      RET
;-----------------------------------------
DELAY: PUSH AX                              
       PUSH CX
DELAY1:MOV CX,0001H
       MOV AX,0040H
DELAY2:DEC AX
       JNZ DELAY2
       LOOP DELAY1
       POP CX
       POP AX
       RET
;-----------------------------------------
SLACK: CALL DISP                            
       MOV AL,00H
       OUT 61H,AL
       IN  AL,62H
       AND AL,18H
       CMP AL,18H
       JNZ SLACK
       JMP CHECK
CODE ENDS
     END START
2009年07月15日 20点07分 13
level 9
DATA SEGMENT
  ORG 3000H
TAB  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H
SEL  DB  07H,0BH,0BH,0EH
VAR1 DB 3FH,3FH,3FH,3FH,3FH      
DATA ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV AL,89H                          
       OUT 63H,AL
CHECK: MOV AL,0                            
       OUT 61H,AL
       IN  AL,62H
       AND AL,18H
       CMP AL,18H
       JNZ KEY
       CALL DISP
       JMP  CHECK
KEY:   CALL DELAY
       IN AL,62H
       AND AL,18H
       CMP AL,18H
       JNZ KEY11
       JMP CHECK
KEY11: MOV AL,07H                          
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY12
       CALL KEY6
       JMP SLACK   
KEY12: TEST AL,10H
       JNZ  KEY21
       CALL KEY1
       JMP  SLACK  
KEY21: MOV AL,0BH
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY22
       CALL KEY4
       JMP SLACK  
KEY22: TEST AL,10H
       JNZ  KEY31
       CALL KEY3

2009年07月15日 20点07分 14
level 9
       JMP  SLACK  
KEY31: MOV AL,0DH
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY32
       CALL KEY2
       JMP SLACK   
KEY32: TEST AL,10H
       JNZ  KEY41
       CALL KEY5
       JMP  SLACK 
KEY41: MOV AL,0EH
       OUT 61H,AL
       IN  AL,62H
       TEST AL,08H
       JNZ  KEY42
       CALL  KEY0
       JMP SLACK   
KEY42: TEST AL,10H
       JNZ  KEYOVER
       CALL KEY7
KEYOVER:JMP  SLACK 

;---------------------------------
KEY0: CALL LP1                                  
       MOV AL,3FH
       MOV [SI+3],AL
       CALL DISP
       RET
;---------------------------------
KEY1: CALL LP1                                 
       MOV AL,06H
       MOV [SI+3],AL
       CALL SHOW
       RET
;----------------------------------
KEY2: CALL LP1                                 
       MOV AL,5BH
       MOV [SI+3],AL
       CALL DISP
       RET 
;-----------------------------------
KEY3: CALL LP1                                 

2009年07月15日 20点07分 15
level 9
       MOV AL,4FH
       MOV [SI+3],AL
       CALL DISP
       RET 
;-----------------------------------
KEY4: CALL LP1                                 
       MOV AL,66H
       MOV [SI+3],AL
       CALL DISP
       RET 
;-------------------------------------
KEY5: CALL LP1                                 
       MOV AL,6DH
       MOV [SI+3],AL
       CALL DISP
       RET 
;--------------------------------------
KEY6: CALL LP1                                  
       MOV AL,7DH
       MOV [SI+3],AL
       CALL DISP
       RET 
;-------------------------------------
KEY7: CALL LP1                                  
       MOV AL,07H
       MOV [SI+3],AL
       CALL DISP
       RET 
;----------------------------------------
LP1: MOV  CX,0003H                          
     LEA SI,VAR1 
LP2: MOV AL,[SI+2]
     MOV [SI+3],AL
     DEC SI
     LOOP LP2
     RET
;-----------------------------------------
DISP: LEA SI,SEL                                       

2009年07月15日 20点07分 16
level 9
      LEA DI,VAR1 
      MOV DL,[DI+3]
      CMP DL,3FH
      JNZ DIR3
      MOV DL,[DI+2]
      CMP DL,3FH
      JNZ DIR2
      MOV DL,[DI+1]
      CMP DL,3FH
      JNZ DIR1
      JNZ DIR0
DIR3: MOV CX,0004H
      JMP DIR
DIR2: MOV CX,0003H
      JMP DIR
DIR1: MOV CX,0002H
      JMP DIR
DIR0: MOV CX,0001H
DIR:  MOV AL,[SI]
      OUT 61H,AL
      MOV AL,[DI]
      OUT 60H,AL
      CALL DELAY
      INC SI
      INC DI
      LOOP DIR
      RET
;-----------------------------------------
DELAY: PUSH AX                              
       PUSH CX
DELAY1:MOV CX,0001H
       MOV AX,0040H
DELAY2:DEC AX
       JNZ DELAY2
       LOOP DELAY1
       POP CX
       POP AX
       RET
;-----------------------------------------
SLACK: CALL DISP                            
       MOV AL,00H
       OUT 61H,AL
       IN  AL,62H
       AND AL,18H
       CMP AL,18H
       JNZ SLACK
       JMP CHECK
CODE ENDS
     END START
2009年07月15日 20点07分 17
level 14
这些东西也需要备份?
2009年07月16日 10点07分 19
1