2020年6月30日 星期二

兩個計時中斷


108 stop 00 beepX3

#include <at89x52.h>
char seg7_table0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char scanline[]={0xfe,0xfd};
char bcd[]={0,0};
char bdata flag;
sbit up_flag=flag^0;
sbit down_flag=flag^1;
int count=0;
int j;
int time=20;
sbit btn1=P3^0;
sbit buzzer = P3^7;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
      ;
}
void beep(int count,int TH,int TL)
{
 int i;
 for(i=0;i<count;i++)
 {
  buzzer=0;
  delay_1ms(TL);
  buzzer=1;
  delay_1ms(TH);
 }
}
main()
{
beep(100,1,1);delay_1ms(1000);
beep(100,1,1);delay_1ms(1000);
beep(100,1,1);delay_1ms(1000);
IE=0x8A;
TMOD=0x10;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=0;
up_flag=1;
down_flag=0;
while(1)
{
if(btn1==0)
{
delay_1ms(20);while(btn1!=1);delay_1ms(20);
TR1=1;
up_flag=~up_flag;down_flag=~down_flag;
}
}
}
void T0_int(void) interrupt 1
{
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
P0=seg7_table0[bcd[j]];
P2=scanline[j];
j++;
if(j==2)
j=0;
}
void T1_int(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
time--;
if(time==0)
{
time=20;
if(up_flag==1)
{
count++;
if(count>99)
count=0;
}
else if(down_flag==1)
{
count--;
if(count<0)
count=99;
}
bcd[0]=count%10;
bcd[1]=count/10;
}
}

bug


2020年6月29日 星期一

fw


股東大會投票器


loop up_down

#include <at89x52.h>
char P0table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
/*                                                                  a   b     c   d     e   f    
1111 1110  1111 1111 0xfe 0xff a   off                             10   11    12  13    14  15  16
1111 1111  1111 1110 0xff 0xfe off a
1111 1111  1111 1101 0xff 0xfd off b
1111 1111  1111 1011 0xff 0xfb off c
1111 1111  1111 0111 0xff 0xf7 off d
1111 0111  1111 1111 0xf7 0xff d off
1110 1111  1111 1111 0xef 0xff e off
1101 1111  1111 1111 0xdf 0xff f 0ff
*/
char P2table[]={0xfe,0xfd,0xfb,0xf7};
char bdata flag;
sbit up_flag=flag^0;
sbit down_flag=flag^1;
sbit cck_flag=flag^2;
sbit anti_cck_flag=flag^3;
char bcd[]={4,0,7,0};
int count=0;
int cck_cnt;
int time=20;
int j;
sbit btn1=P3^0;
sbit btn2=P3^1;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
      ;
}
main()
{
IE=0x8A;
TMOD=0x10;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
up_flag=1;down_flag=0;
cck_flag=1;anti_cck_flag=0;
while(1)
{
if(btn1==0)
{
up_flag=~up_flag;down_flag=~down_flag;delay_1ms(20);while(btn1!=1);delay_1ms(20);
}
if(btn2==0)
{
cck_flag=~cck_flag;anti_cck_flag=~anti_cck_flag;delay_1ms(20);while(btn2!=1);delay_1ms(20);
}
}
}
void t0_int0(void) interrupt 1
{
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
P0=P0table[bcd[j]];
P2=P2table[j];
j++;
if(j==4)
j=0;
}
void t1_int0(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
time--;
if(time==0)
{
time=20;
if(up_flag==1)
{
  count++;
  if(count>99)//兩個獨立的系統,所以用if else if  if else if
  count=0;
}
else if(down_flag==1)
{
count--;
if(count<0)
count=99;
}
if(cck_flag==1)
{
cck_cnt++;
if(cck_cnt>7)
cck_cnt=0;
}
else if(anti_cck_flag==1)
{
cck_cnt--;
if(cck_cnt<0)
cck_cnt=7;
}
if(cck_cnt==0){ bcd[3]=10;bcd[2]=16;}
if(cck_cnt==1){ bcd[3]=16;bcd[2]=10;}
if(cck_cnt==2){      bcd[3]=16;bcd[2]=11;}
if(cck_cnt==3){ bcd[3]=16;bcd[2]=12;}
if(cck_cnt==4){ bcd[3]=16;bcd[2]=13;}
if(cck_cnt==5){ bcd[3]=13;bcd[2]=16;}
if(cck_cnt==6){ bcd[3]=14;bcd[2]=16;}
if(cck_cnt==7){ bcd[3]=15;bcd[2]=16;}
bcd[0]=count%10;
bcd[1]=count/10;
}
}

00~99 up down

#include <at89x52.h>
char P0table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char P2table[]={0xfe,0xfd};
char bdata flag;
sbit up_flag=flag^0;
sbit down_flag=flag^1;
char bcd[]={0,0};
int count=0;
int time=20;
int j;
sbit btn1=P3^0;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
      ;
}
main()
{
IE=0x8A;
TMOD=0x10;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
up_flag=1;
down_flag=0;
while(1)
{
if(btn1==0)
{
up_flag=~up_flag;down_flag=~down_flag;delay_1ms(20);while(btn1!=1);delay_1ms(20);
}
}
}
void t0_int0(void) interrupt 1
{
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
P0=P0table[bcd[j]];
P2=P2table[j];
j++;
if(j==2)
j=0;
}
void t1_int0(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
time--;
if(time==0)
{
time=20;
if(up_flag==1)
{
  count++;
  if(count>99)
  count=0;
}
else if(down_flag==1)
{
count--;
if(count<0)
count=99;
}
bcd[0]=count%10;
bcd[1]=count/10;
}
}

2020年6月28日 星期日

test 107

#include <at89x52.h>
char seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char left_move[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
char left_add[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
char righ_add[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
char seg2020[]={0xb0,0xc0,0xb0,0xc0};
char seg0704[]={0xc0,0xf8,0xc0,0x92};
char buf[]={0xc0,0xc0,0xc0,0xc0};
char scanline=0x01;
sbit led0=P3^0;
sbit led1=P3^1;
sbit led2=P3^2;
sbit led3=P3^3;
sbit btn1=P3^4;
sbit btn2=P3^5;
int Mode=0;
int i,j,x=0;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
     ;
}
void init()
{
int i;
for(i=0;i<2;i++)
{
P1=0X00;delay_1ms(1000);
P2=0X00;delay_1ms(1000);
led0=0;led1=0;led2=0;led3=0;P0=0x00;delay_1ms(1000);
P1=0XFF;delay_1ms(1000);
P2=0XFF;delay_1ms(1000);
led0=1;led1=1;led2=1;led3=1;P0=0xFF;delay_1ms(1000);
}
P2=seg7[0];
}
main()
{
 init();
 while(1)
 {
while(btn1==0) //開關按下
   {
    delay_1ms(10);
    if(btn1==1)  //開關放開
    { 
       delay_1ms(10);
       Mode=Mode+1;
       if(Mode>9)
       Mode=0;
    }
   }
   while(btn2==0)
   {
      delay_1ms(10);
      if(btn2==1)
      {
        delay_1ms(10);
        Mode=Mode-1;
        if(Mode < 0)
        Mode=9;
      }
   }
switch(Mode)
   {
case 0:
     P2=seg7[0];P1=0xff;P0=0xff;
           break;
    case 1:
           P2=seg7[1];delay_1ms(20);
       P1=0x00;delay_1ms(500);
       P1=0xff;delay_1ms(500);
           break;
    case 2:
           P2=seg7[2];
       for(i=0;i<8;i++)
       {
      P1=~left_move[i];delay_1ms(500);
       }
           break;
    case 3:
           P2=seg7[3];
for(i=7;i>=0;i--)
{
P1=~left_move[i];delay_1ms(500);
}
           break;
    case 4:
            P2=seg7[4];
        for(i=0;i<8;i++)
        {
       P1=~left_add[i];delay_1ms(500);
        }
            break;
    case 5:
P2=seg7[5];
for(i=0;i<8;i++)
{
P1=~righ_add[i];delay_1ms(500);
}
break;
case 6:
           P2=seg7[6];
           P3=~0x01 & 0x0f ;P0=buf[0];delay_1ms(4);
       P3=~0x02 & 0x0f ;P0=buf[1];delay_1ms(4);
       P3=~0x04 & 0x0f ;P0=buf[2];delay_1ms(4);
       P3=~0x08 & 0x0f ;P0=buf[3];delay_1ms(4);
             break;
case 7:
           P2=seg7[7];P1=0xff;P0=0xff;
           break;
case 8:
           P2=seg7[8];P1=0xff;P0=0xff;
           break;
case 9:
           P2=seg7[9];P1=0xff;P0=0xff;
           break;
    }
}
 }

心得

scanline是低四位元 &0x0f要保留低四位元, 最外圍100次才會出來(離開)
跑完才能按下一輪,其實用中斷,用bit即可名稱自已訂
flag if x=1放什麼 x=2
       if x=2放什麼x=1
不求什麼,努力的耕耘

107電子電路


2020年6月27日 星期六

107


H21A3


107

#include <at89x52.h>
char seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char left_move[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
char left_add[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
char righ_add[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
sbit led0=P3^0;
sbit led1=P3^1;
sbit led2=P3^2;
sbit led3=P3^3;
sbit btn1=P3^4;
sbit btn2=P3^5;
int k=0;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
     ;
}
void init()
{
int i;
for(i=0;i<2;i++)
{
P1=0X00;delay_1ms(1000);
P2=0X00;delay_1ms(1000);
led0=0;led1=0;led2=0;led3=0;P0=0x00;delay_1ms(1000);
P1=0XFF;delay_1ms(1000);
P2=0XFF;delay_1ms(1000);
led0=1;led1=1;led2=1;led3=1;P0=0xFF;delay_1ms(1000);
}
P2=seg7[0];
}
main()
{
 init();
 while(1)
 {
if(btn1==0)
{
delay_1ms(20);while(btn1!=1);delay_1ms(20);
k=k+1;
if(k>9)k=0;
}
if(btn2==0)
{
delay_1ms(20);while(btn2!=1);delay_1ms(20);
k=k-1;
if(k<0)k=9;
  }
if(k==1)
{
P2=seg7[1];delay_1ms(20);
P1=0x00;delay_1ms(500);
P1=0xff;delay_1ms(500);
}
if(k==2)
{
int i;
P2=seg7[2];delay_1ms(20);
for(i=0;i<8;i++)
{
P1=~left_move[i];delay_1ms(500);
}
}
if(k==3)
{
int i;
P2=seg7[3];delay_1ms(20);
for(i=7;i>=0;i--)
{
P1=~left_move[i];delay_1ms(500);
}
}
if(k==4)
{
int i;
P2=seg7[4];delay_1ms(20);
for(i=0;i<8;i++)
{
P1=~left_add[i];delay_1ms(500);
}
}
if(k==5)
{
int i;
P2=seg7[5];delay_1ms(20);
for(i=0;i<8;i++)
{
P1=~righ_add[i];delay_1ms(500);
}
}
if(k==6)
{
// int i,j;
P2=seg7[6];delay_1ms(20);
// for(i=0;i<100;i++)
// {
// for(j=0;j<50;j++)
// {

//      led0=0;led1=1;led2=1;led3=1;P0=seg7[9];delay_1ms(4);
//      led0=1;led1=0;led2=1;led3=1;P0=seg7[1];delay_1ms(4);
//      led0=1;led1=1;led2=0;led3=1;P0=seg7[0];delay_1ms(4);
//      led0=1;led1=1;led2=1;led3=0;P0=seg7[2];delay_1ms(4);
//         led0=1;
// led1=1;
// led2=1;
// led3=1;
// P0=0xFF;     
//       led0=0;led1=1;led2=1;led3=1;P0=seg7[4];delay_1ms(2);
//      led0=1;led1=0;led2=1;led3=1;P0=seg7[0];delay_1ms(2);
//      led0=1;led1=1;led2=0;led3=1;P0=seg7[7];delay_1ms(2);
//      led0=1;led1=1;led2=1;led3=0;P0=seg7[0];delay_1ms(2);

////        }
//     }
    }
if(k==0)
{
P2=seg7[0];delay_1ms(20);P1=0xff;P0=0xff;
}
if(k==7)
{
P2=seg7[7];delay_1ms(20);P1=0xff;P0=0xff;
}
if(k==8)
{
P2=seg7[8];delay_1ms(20);P1=0xff;P0=0xff;
}
if(k==9)
{
P2=seg7[9];delay_1ms(20);P1=0xff;P0=0xff;
}



}
}

107

#include <at89x52.h>
char seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char left_move[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
char left_add[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
char righ_add[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
sbit led0=P3^0;
sbit led1=P3^1;
sbit led2=P3^2;
sbit led3=P3^3;
sbit btn1=P3^4;
sbit btn2=P3^5;
int k=0;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
     ;
}
void init()
{
int i;
for(i=0;i<2;i++)
{
P1=0X00;delay_1ms(1000);
P2=0X00;delay_1ms(1000);
led0=0;led1=0;led2=0;led3=0;P0=0x00;delay_1ms(1000);
P1=0XFF;delay_1ms(1000);
P2=0XFF;delay_1ms(1000);
led0=1;led1=1;led2=1;led3=1;P0=0xFF;delay_1ms(1000);
}
P2=seg7[0];
}
main()
{
 init();
 while(1)
 {
if(btn1==0)
{
delay_1ms(20);while(btn1!=1);delay_1ms(20);
k=k+1;
if(k>9)k=0;
}
if(btn2==0)
{
delay_1ms(20);while(btn2!=1);delay_1ms(20);
k=k-1;
if(k<0)k=9;
  }
if(k==1)
{
P2=seg7[1];delay_1ms(20);
P1=0x00;delay_1ms(500);
P1=0xff;delay_1ms(500);
}
if(k==2)
{
int i;
P2=seg7[2];delay_1ms(20);
for(i=0;i<8;i++)
{
P1=~left_move[i];delay_1ms(500);
}
}
if(k==3)
{
int i;
P2=seg7[3];delay_1ms(20);
for(i=7;i>=0;i--)
{
P1=~left_move[i];delay_1ms(500);
}
}
if(k==4)
{
int i;
P2=seg7[4];delay_1ms(20);
for(i=0;i<8;i++)
{
P1=~left_add[i];delay_1ms(500);
}
}
if(k==5)
{
int i;
P2=seg7[5];delay_1ms(20);
for(i=0;i<8;i++)
{
P1=~righ_add[i];delay_1ms(500);
}
}
 }
}

test

#include <at89x52.h>
char seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit led0=P3^0;
sbit led1=P3^1;
sbit led2=P3^2;
sbit led3=P3^3;
sbit btn1=P3^4;
sbit btn2=P3^5;
int k=0;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
     ;
}
void init()
{
int i;
for(i=0;i<2;i++)
{
P1=0X00;delay_1ms(1000);
P2=0X00;delay_1ms(1000);
led0=0;led1=0;led2=0;led3=0;P0=0x00;delay_1ms(1000);
P1=0XFF;delay_1ms(1000);
P2=0XFF;delay_1ms(1000);
led0=1;led1=1;led2=1;led3=1;P0=0xFF;delay_1ms(1000);
}
P2=seg7[0];
}
main()
{
 init();
 while(1)
 {
if(btn1==0)
{
delay_1ms(20);while(btn1!=1);delay_1ms(20);
k=k+1;
if(k>9)k=0;
P2=seg7[k];delay_1ms(20);
}
if(btn2==0)
{
delay_1ms(20);while(btn2!=1);delay_1ms(20);
k=k-1;
if(k<0)k=9;
P2=seg7[k];delay_1ms(20);
}
 }
}

2020年6月26日 星期五

00-60


test

#include <at89x52.h>
char table[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
char table1[]={0x81,0x42,0x24,0x18,0x24,0x42};
sbit btn1=P2^0;
sbit btn2=P2^1;
sbit dip_sw1=P0^0;
int k=-1;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
     ;
}
void ex0_int(void) interrupt 1
{
int i;
P1=0xFF;
for(i=0;i<10;i++)
{
P1=P1^0xFF;
delay_1ms(500);
}
}
main()
{
IE=0x81;
TCON=0x01;
while(1)
{
if(btn1==0)
{
delay_1ms(20);while(btn1!=1);delay_1ms(20);
k=k+1;
if(k>7)
k=0;
}
if(btn2==0)
{
delay_1ms(20);while(btn2!=1);delay_1ms(20);
k=k-1;
if(k<0)
k=7;
}
if(dip_sw1==0)
{
int i;
delay_1ms(20);while(dip_sw1==1);delay_1ms(20);
for(i=0;i<6;i++)
{
P1=~table1[i];delay_1ms(1000);
}
}
if(k==0){P1=~table[k];}
if(k==1){P1=~table[k];}
if(k==2){P1=~table[k];}
if(k==3){P1=~table[k];}
if(k==4){P1=~table[k];}
if(k==5){P1=~table[k];}
if(k==6){P1=~table[k];}
if(k==7){P1=~table[k];}
}
}

心得

一、1hr 800元思考方向,訓練8051寫程式,出現題目腦袋如何想,動腦袋。
二、teamview line畫面OK
三、丟一個程式叫您寫,軟體,從最基本東西,看到題目去做判斷題目
四、考上的人:下午四、五點開始練到十點,含星期六也在練
        每一個星期空一天來練習
     1.俊谷高手:腳步練,題目、學科整套都有
     2.timer是基本的
     3.準備一台筆電,隨時隨地訓練
五、同步就JK 亂數654321下數
六、除60時鐘
七、到數計時7490反接
八、內湖只考Arduino提前一年準備,有時臨時改arm

btn1 btn2 led左右移

#include <at89x52.h>
char table[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
sbit btn1=P2^0;
sbit btn2=P2^1;
int k=-1;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
     ;
}
main()
{
while(1)
{
if(btn1==0)
{
delay_1ms(20);while(btn1!=1);delay_1ms(20);
k=k+1;
if(k>7)
k=0;
}
if(btn2==0)
{
delay_1ms(20);while(btn2!=1);delay_1ms(20);
k=k-1;
if(k<0)
k=7;
}
if(k==0){P1=~table[k];}
if(k==1){P1=~table[k];}
if(k==2){P1=~table[k];}
if(k==3){P1=~table[k];}
if(k==4){P1=~table[k];}
if(k==5){P1=~table[k];}
if(k==6){P1=~table[k];}
if(k==7){P1=~table[k];}
}
}

注意事項

1.8051線路設計,外接接上,硬體線路Hi Low,輸出7段、四段如何接,設定兩小時外接,基     本分數
2.線路接好,寫程式
結論:硬體線路簡單再使用,比較習慣用P1、P0、scan掃瞄埠、按鈕
3.反查用名字反查ip)
4.測試設定好,mail無法做寄信
5.練習數位邏輯24小時24模

2020年6月25日 星期四

4X4

#include <at89x52.h>
char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char bdata flag;
sbit up_flag=flag^0;
sbit down_flag=flag^1;
sbit stop_flag=flag^2;
int time=10;
int disp_add;
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
       ;
}
main()
{
IE=0x82;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
P2=0x7f;
if(P2_3==0)                         {flag=0;P0=table[1];disp_add=1;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}
if(P2_2==0){flag=0;P0=table[4];disp_add=4;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}
if(P2_1==0){flag=0;P0=table[7];disp_add=7;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}

P2=0xbf;
if(P2_3==0){flag=0;P0=table[2];disp_add=2;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}
if(P2_2==0){flag=0;P0=table[5];disp_add=5;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}
if(P2_1==0){flag=0;P0=table[8];disp_add=8;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}
if(P2_0==0){flag=0;P0=table[0];disp_add=0;delay_1ms(20);while(P2_0!=1);delay_1ms(20);}

P2=0xdf;
if(P2_3==0){flag=0;P0=table[3];disp_add=3;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}
if(P2_2==0){flag=0;P0=table[6];disp_add=6;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}
if(P2_1==0){flag=0;P0=table[9];disp_add=9;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}
if(P2_0==0){flag=0;P0=table[0];disp_add=0;delay_1ms(20);while(P2_0!=1);delay_1ms(20);}

P2=0xef;
if(P2_3==0){flag=0;up_flag=1;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}
if(P2_2==0){flag=0;down_flag=1;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}
if(P2_1==0){flag=0;stop_flag=1;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}
if(P2_0==0){flag=0;stop_flag=0;delay_1ms(20);while(P2_0!=1);delay_1ms(20);}
}

}
void t0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time--;
if(time==0)
{
time=10;
if(stop_flag==1)
  {
;
}
else if(up_flag==1)
{
disp_add++;
if(disp_add>9)disp_add=0;
}
else if(down_flag==1)
{
disp_add--;
if(disp_add<0)
disp_add=9;
}
P0=table[disp_add];delay_1ms(500);

  }
}

4x4


#include <at89x52.h>
char ptn_table[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90};
char time=10;
char disp_no;
char  bdata flag;
sbit up_flag=flag^0;
sbit down_flag=flag^1;
sbit stop_flag=flag^2;
void delay_1ms(int k)
{
  unsigned int i,j;
  for (i=0;i<=k;i++)
    for (j=0;j<=110;j++);
}

void T0_INT(void) interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;

time--;
if(time==0)
{
time=10;
if(stop_flag){}
else if(up_flag)
{
  disp_no++;
      if(disp_no>9)
  {
disp_no=0;
  }
  P0=ptn_table[disp_no];
  delay_1ms(500);
}
else if(down_flag)
{
disp_no--;
      if(disp_no<0)
{
disp_no=9;
}
P0=ptn_table[disp_no];
delay_1ms(500);
}
}
}



void main()
{
IE=0x82;
TMOD=0X01; //T0 MODE 1
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
TR0=1;


P0=0xff;
while(1)
{
P2=0x7f;
if(P2_3==0){flag=0;P0=0xf9;disp_no=0;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}//1 
if(P2_2==0){flag=0;P0=0x99;disp_no=4;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}//4
if(P2_1==0){flag=0;P0=0xf8;disp_no=7;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}//7 
if(P2_0==0){flag=0;P0=0xb0;disp_no=14;delay_1ms(20);while(P2_0!=1);delay_1ms(20);}//14 

P2=0xbf;
if(P2_3==0){flag=0;P0=0xa4;disp_no=2;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}//2
if(P2_2==0){flag=0;P0=0X92;disp_no=5;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}//5
if(P2_1==0){flag=0;P0=0x80;disp_no=8;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}//8
if(P2_0==0){flag=0;P0=0xc0;disp_no=0;delay_1ms(20);while(P2_0!=1);delay_1ms(20);}//0 

P2=0xdf;
if(P2_3==0){flag=0;P0=0xb0;disp_no=3;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}//3
if(P2_2==0){flag=0;P0=0X82;disp_no=6;delay_1ms(20);while(P2_2!=1);delay_1ms(20);}//6
if(P2_1==0){flag=0;P0=0x90;disp_no=9;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}//9




P2=0xef;
if(P2_3==0){flag=0;up_flag=1;delay_1ms(20);while(P2_3!=1);delay_1ms(20);}//a
if(P2_2==0){flag=0;down_flag=1;while(P2_2!=1);delay_1ms(20);}//b
if(P2_1==0){stop_flag=0;delay_1ms(20);while(P2_1!=1);delay_1ms(20);}//c
if(P2_0==0){stop_flag=1;delay_1ms(20);while(P2_0!=1);delay_1ms(20);}//d
  }
}

4X4

#include <at89x52.h>
char ptn_table[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90};
char time=10;
char disp_no;
char  bdata flag;
sbit up_flag=flag^0;
sbit down_flag=flag^1;
sbit stop_flag=flag^2;
void delay_1ms(int k)
{
  unsigned int i,j;
  for (i=0;i<=k;i++)
    for (j=0;j<=110;j++);
}

void keyup()
{
 delay_1ms(300);
 while((P2|0xf0)!=0xff);
 delay_1ms(300);
}

void T0_INT(void) interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
time--;
if(time==0)
{
time=10;
if(stop_flag){}
else if(up_flag)
{
    disp_no++;
      if(disp_no>9)
  {
disp_no=0;
  }
  P0=ptn_table[disp_no];
  delay_1ms(500);
}
else if(down_flag)
{
disp_no--;
      if(disp_no<0)
{
disp_no=9;
}
P0=ptn_table[disp_no];
delay_1ms(500);
}
}
}



void main()
{
IE=0x82;
TMOD=0X01; //T0 MODE 1
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
TR0=1;

P0=0xff;
while(1)
{
P2=0x7f;
if(P2_3==0){flag=0;P0=0xf9;disp_no=0;keyup();}//1 
if(P2_2==0){flag=0;P0=0x99;disp_no=4;keyup();}//4
if(P2_1==0){flag=0;P0=0xf8;disp_no=7;keyup();}//7 
if(P2_0==0){flag=0;P0=0xb0;disp_no=14;keyup();}//14 

P2=0xbf;
if(P2_3==0){flag=0;P0=0xa4;disp_no=2;keyup();}//2
if(P2_2==0){flag=0;P0=0X92;disp_no=5;keyup();}//5
if(P2_1==0){flag=0;P0=0x80;disp_no=8;keyup();}//8
if(P2_0==0){flag=0;P0=0xc0;disp_no=0;keyup();}//0 

P2=0xdf;
if(P2_3==0){flag=0;P0=0xb0;disp_no=3;keyup();}//3
if(P2_2==0){flag=0;P0=0X82;disp_no=6;keyup();}//6
if(P2_1==0){flag=0;P0=0x90;disp_no=9;keyup();}//9




P2=0xef;
if(P2_3==0){flag=0;up_flag=1;keyup();}//a
if(P2_2==0){flag=0;down_flag=1;keyup();}//b
if(P2_1==0){keyup();stop_flag=0;}//c繼續上數或下數
if(P2_0==0){keyup();stop_flag=1;}//d暫停
  }
}

4X4

#include <reg51.h>
char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x80,0x90,0xa0,0x83,0xa7,0xa1,0x84,0x8e};
void main()
{
 char scanline;
 char displaydata=0xff;
 char key;
int col;
P0=0xff;
while(1)
{
scanline=0x01;
for(col=0;col<4;col++)
{
P2=~scanline;
if((P2&0xf0)!=0xf0)
{
key=~(P2&0xf0)>>4;
switch(key)
{
case 0x01:displaydata=col*4+0;break;
case 0x02:displaydata=col*4+1;break;
case 0x04:displaydata=col*4+2;break;
case 0x08:displaydata=col*4+3;break;
}
}
if(displaydata!=0xff)
P0=table[displaydata];
scanline=scanline<<1;
}
}

}

7476


F2


2020年6月21日 星期日

test

#include <at89x52.h>
char reset_P0table[]={0xFE,  0XFC,  0XF8,  0XF0,  0XE0,  0XC0,  0X00,  0xc0};
/*                    a       ab    abc    abcd   abcde  abcdef
 1111 1110 a
 1111 1100 ab
 1111 1000 abc
 1111 0000 abcd
 1110 0000 abcde
 1100 0000 abcdef
 0000 0000 abcdefg
 1100 0000 abcdef
*/
int add=-1;
char x;
sbit sw1=P1^0;
sbit sw2=P1^1;
sbit output=P2^0;
bit change_flag=0;
bit sw1_flag;
bit sw2_flag;
bit breath_flag;
unsigned int breath_count;
unsigned int rpt_count;
char disp_seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0xc9,0xb6,0xFF};
/*-------------------------------*/
void delay_1ms(int k)
{
 int i,j;
 for(i=0;i<k;i++)
   for(j=0;j<114;j++)   ;
}
/*-------------------------------*/
void cck_run_7seg()//???a ab abc...
{
 int i;
 for(i=0;i<8;i++) {  P0=reset_P0table[i];  delay_1ms(500); }
}
/*-------------------------------*/
void delay_2ms(int k)//?500hz
{
 int i,j;
 for(i=0;i<k;i++)
   for(j=0;j<20;j++)
       ;
}
void delay_1000ms(int k)//?1khz
{
 int i,j;
 for(i=0;i<k;i++)
   for(j=0;j<6;j++)
       ;
}
void delay_4ms(int k)//245~248hz?250hz
{
 int i,j;
 for(i=0;i<k;i++)
   for(j=0;j<40;j++)
       ;
}

main()
{
  cck_run_7seg();
  while(1)
  {
   if(sw1==0)
   {
    sw1_flag=1;
     delay_1ms(20);while(sw1!=1);delay_1ms(20);
    add++;
    if(add>10) add=0;
   }
/*--------------------------------------------------*/
   if(sw1_flag)
   {
    if(add==0){P0=disp_seg7[0]; x=0; output=0;delay_4ms(x); output=1;delay_4ms(10-x);}
    else if(add==1){ x=1; P0=disp_seg7[1]; output=0;delay_4ms(x);output=1;delay_4ms(10-x);}
    else if(add==2){ x=2; P0=disp_seg7[2]; output=0;delay_4ms(x);output=1;delay_4ms(10-x);}
    else if(add==3){ x=3; P0=disp_seg7[3]; output=0;delay_4ms(x); output=1;delay_4ms(10-x);}
    else if(add==4){ x=4; P0=disp_seg7[4]; output=0;delay_4ms(x); output=1;delay_4ms(10-x); }
    else if(add==5){ x=5; P0=disp_seg7[5]; output=0;delay_4ms(x); output=1;delay_4ms(10-x); }
    else if(add==6){ x=6; P0=disp_seg7[6]; output=0;delay_4ms(x); output=1;delay_4ms(10-x); }
    else if(add==7){ x=7; P0=disp_seg7[7]; output=0;delay_4ms(x); output=1;delay_4ms(10-x);}
    else if(add==8){ x=8; P0=disp_seg7[8]; output=0;delay_4ms(x); output=1;delay_4ms(10-x);}
    else if(add==9){ x=9; P0=disp_seg7[9]; output=0;delay_4ms(x); output=1;delay_4ms(10-x);}
    else if(add==10){x=10;P0=disp_seg7[10];output=0;delay_4ms(x); output=1;delay_4ms(10-x);}
   }

00 10 01 11



2020年6月20日 星期六

108資訊科術科試題


一、網路管理設計(25%)
()(10)使用工具壓製一條Cat5e 網路線採EIA568b方式壓製,需測試通過才給分。

 
  不要先剪,先做一頭完成再比150多一點點(不要剛好剪150),看人的身高多少150公分正負7.5公分
() (90)一部電腦,本機安裝windows server2012(usb安裝)Virtualbox上安裝Fedora core12(光碟安裝)
1. Windows server2012
 (1)建立使用者帳號(須具備administrator權限)admin密碼:A@108user1密  
   碼:B@102
 (2)IP192.168.1.1
 (3)電腦名稱改為Teacher0615
 (4)DNS: ftp:192.168.x.xmail:192.168.x.x
 (5)DHCP: 教學大樓:192.168.x.x~192.168.x.x
                   行政大樓:192.168.x.x~192.168.x.x
實際應用gateway指定。
Server綁兩個網段,
租期更換10天,一天是86400,十天乘於10,時間到再重新分配
禁用IP可以用192.168.2.201(排除IP範圍、禁用IP)
綁三張網卡,DHCP只能發那一段,有兩個網段,可用另一台NB
反向區域:自動
ftp.teacher.edu.tw  192.168.1.2
mail.teacher.edu.tw 192.168.1.3
 (6)IIS:Fedora透過瀏覽器連線(才給分),能開啟IIS預設網頁
 (7)網頁: <h3> <font color=red> 工作崗位:xx 考試日期:xx 姓名:xx
2. Fedora core12
       (1)建立使用者帳號(須具備root權限,root密碼同下述)admin
   密碼:A@10803
(2)IP192.168.x.x
(3)可連線到server2012
二、數位邏輯實習(25%)
 請設計一「同步計數器00->10->01->11->00…
1.         555輸出頻率0.5~2hz,可用LED觀看。
2.         同步計數器顯示00->10->01->11->00…可用LED觀看。


algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...