2019年8月31日 星期六

按鈕控制上下數



int i;
int j;
int count=0;
int number;
int KeyData;
int numKeys=0;
const int debounceDelay=20;
unsigned long time=0;
const byte num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
const int seg[]={6,7,8,9,10,11,12};  //abcdefgp
const int digit[]={2,3,4,5};    //D0-D3
const int sw=14;
void setup()
{
  pinMode(sw,INPUT_PULLUP);
  digitalWrite(sw,HIGH);
  for(i=0;i<8;i++)
    pinMode(seg[i],OUTPUT);
  for(i=0;i<4;i++)
  {
    pinMode(digit[i],OUTPUT);
    digitalWrite(digit[i],1);
  }   
}
void loop()
{
  KeyData=digitalRead(sw); 
  if(KeyData==LOW)   
  {
    delay(debounceDelay);
    while(digitalRead(sw)==LOW)
      ; 
    numKeys++;
  } 
  number=count;
  for(i=3;i>=0;i--)
  {
      for(j=0;j<7;j++)
      { 
        digitalWrite(seg[j],bitRead(num[number%10],j));
      }
      digitalWrite(digit[i],0);     
      delay(5);
      digitalWrite(digit[i],1);         
      number=number/10;
      if(millis()-time>=1000)
      {
         time=millis();
        if(numKeys%2==0)
        {
          count++;
          if(count>9999)
            count=0;
        }
        else
        {
          count--;
          if(count<0)
            count=9999;
        }             
      }       
  }

四位數,開關上下數

int i;
int j;
int count=0;
int number;
int KeyData;
int numKeys=0;
const int debounceDelay=20;
unsigned long time=0;
const byte num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
const int seg[]={6,7,8,9,10,11,12};  //abcdefgp
const int digit[]={2,3,4,5};    //D0-D3
const int sw=13;
void setup()
{
  pinMode(sw,INPUT_PULLUP);
 // digitalWrite(sw,HIGH);
  for(i=0;i<8;i++)
    pinMode(seg[i],OUTPUT);
  for(i=0;i<4;i++)
  {
    pinMode(digit[i],OUTPUT);
    digitalWrite(digit[i],LOW);
  }   
}
void loop()
{
  KeyData=digitalRead(sw); 
  if(KeyData==LOW)   
  {
    delay(debounceDelay);
    while(digitalRead(sw)==LOW)
      ; 
    numKeys++;
  } 
  number=count;
  for(i=3;i>=0;i--)
  {
      for(j=0;j<8;j++)
      { 
        digitalWrite(seg[j],bitRead(~num[number%10],j));
      }
      digitalWrite(digit[i],1);     
      delay(5);
      digitalWrite(digit[i],0);         
      number=number/10;
      if(millis()-time>=1000)
      {
         time=millis();
        if(numKeys%2==0)
        {
          count++;
          if(count>9999)
            count=0;
        }
        else
        {
          count--;
          if(count<0)
            count=9999;
        }             
      }       
  }
}

按1~15顯示1~15

int i;     
int j;
int k;                   
bool up_flag=0;
const int numCols=4; 
const int numRows=4; 
const int debounceDelay=20;
const char num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
const int seg7[]={6,7,8,9,10,11,12};     
const int col[]={A0,A1,A2,A3};//類比輸入當數位腳(行)
const int row[]={2,3,4,5};//{9,8,7,6};     
const int keyMap[numRows][numCols]=
{
  {1, 2, 3, 10},           
  {4, 5, 6, 11},           
  {7, 8, 9, 12},           
  {14,0,15, 13}
};               
void setup()
{
  for(i=0;i<numRows;i++)
  {
     pinMode(row[i],OUTPUT); 
     digitalWrite(row[i],HIGH); 
  }
  for(j=0;j<numCols;j++)
  {
     pinMode(col[j],INPUT);   
     digitalWrite(col[j],HIGH); 
  }
  for(k=0;k<7;k++)
  {
     pinMode(seg7[k],OUTPUT); 
     digitalWrite(seg7[k],LOW); 
  }
}
void loop()
{
  int key=getKey(); 
  if(key>=0 && key<=15) 
  {
  output(num[key]);
  }
//   if(digitalRead(key)==0 && key==10 )//按鍵A為自動上數0~9
//  {
//   //stop_flag=0;
//   up_flag=1;
//  }
//  if(up_flag==1)
//  {
//   if(key>9) key=0;
//   key++;
//   output(num[key]);
//   delay(1000);
//  }
}

int getKey()
{
  int i;
  int j;
  int key=-1;     
  for(i=0;i<numRows;i++)
  {
    digitalWrite(row[i],LOW);       
    for(j=0;j<numCols;j++)   
    {
      if(digitalRead(col[j])==LOW) 
      {
        delay(debounceDelay);   
        while(digitalRead(col[j])==LOW)
            ;
        key=keyMap[i][j];     
      }
    }
    digitalWrite(row[i],HIGH);       
  }
  return(key);     
}
 void output(byte data)
{
  for(i=0;i<7;i++)
  digitalWrite(seg7[i],bitRead(~data,i));
}

2019年8月30日 星期五

4X4鍵盤,按1顯示1,按2顯示2


int i;     
int j;
int k;                   
int ledStatus[10]; 
const int numCols=4; 
const int numRows=4; 
const int debounceDelay=20;
const char num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
const int seg7[]={6,7,8,9,10,11,12};     
const int col[]={A0,A1,A2,A3};//類比輸入當數位腳(行)
const int row[]={2,3,4,5};//{9,8,7,6};     
const int keyMap[numRows][numCols]=
{
  {1, 2, 3, 12},           
  {4, 5, 6, 13},           
  {7, 8, 9, 14},           
  {10,0,11, 15}
};               
void setup()
{
  for(i=0;i<numRows;i++)
  {
     pinMode(row[i],OUTPUT); 
     digitalWrite(row[i],HIGH); 
  }
  for(j=0;j<numCols;j++)
  {
     pinMode(col[j],INPUT);   
     digitalWrite(col[j],HIGH); 
  }
  for(k=0;k<7;k++)
  {
     pinMode(seg7[k],OUTPUT); 
     digitalWrite(seg7[k],LOW); 
  }
}
void loop()
{
  int key=getKey(); 
  if(key>=0 && key<=9) 
  {
  output(num[key]);
  }
}
int getKey()
{
  int i;
  int j;
  int key=-1;     
  for(i=0;i<numRows;i++)
  {
    digitalWrite(row[i],LOW);       
    for(j=0;j<numCols;j++)   
    {
      if(digitalRead(col[j])==LOW) 
      {
        delay(debounceDelay);   
        while(digitalRead(col[j])==LOW)
            ;
        key=keyMap[i][j];     
      }
    }
    digitalWrite(row[i],HIGH);       
  }
  return(key);     
}
 void output(byte data)
{
  for(i=0;i<7;i++)
  digitalWrite(seg7[i],bitRead(~data,i));
}

2019年8月29日 星期四

4X4 keyboard


int i;       
int j; 
int k;                     
int ledStatus[10];   
const int numCols=4;   
const int numRows=4;   
const int debounceDelay=20; 
const int led[]={10,11,12,13,14,15,16,17,18,19};     
const int col[]={6,7,8,9};//{9,8,7,6};   
const int row[]={2,3,4,5};   
const int keyMap[numRows][numCols]=
{
  {1, 2, 3, 12},           
  {4, 5, 6, 13},           
  {7, 8, 9, 14},             
  {10,0,11, 15}
};                 
void setup()
{
  for(i=0;i<numRows;i++) 
  {
     pinMode(row[i],OUTPUT);   
     digitalWrite(row[i],HIGH); 
  } 
  for(j=0;j<numCols;j++)
  {
     pinMode(col[j],INPUT);   
     digitalWrite(col[j],HIGH); 
  } 
  for(k=0;k<10;k++)
  {
     pinMode(led[k],OUTPUT);   
     digitalWrite(led[k],LOW);   
     ledStatus[k]=LOW;   
  } 
}
void loop()
{
  int key=getKey(); 
  if(key>=0 && key<=9)   
  {
    ledStatus[key]=!ledStatus[key];
    digitalWrite(led[key],ledStatus[key]); 
  } 
}
int getKey()
{
  int i;
  int j;
  int key=-1;     
  for(i=0;i<numRows;i++)
  {
    digitalWrite(row[i],LOW);       
    for(j=0;j<numCols;j++)     
    {
      if(digitalRead(col[j])==LOW)   
      {
        delay(debounceDelay);   
        while(digitalRead(col[j])==LOW)
            ;
        key=keyMap[i][j];     
      }
    } 
    digitalWrite(row[i],HIGH);       
  }
  return(key);       
}

2019年8月28日 星期三

四個按鍵 +1 -1 自動上數 暫停

/*
key1:按一下加1,最大到9,再按一下為0(例01234567890....)
key2:按一下減1,最小到9,再按一下為0(例98765432109....)
key3:自動上數0~9
key4:暫停
*/
#define key1 A0
#define key2 A1
#define key3 A2
#define key4 A3
int i;
int j;
int keyval;
bool up_flag=0;
bool stop_flag=0;
const char num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
const int seg[]={2,3,4,5,6,7,8,9};
void setup()
{
  for(i=0;i<8;i++)
  {
    pinMode(seg[i],OUTPUT);
  }
  pinMode(key1,INPUT);
  pinMode(key2,INPUT);
  pinMode(key3,INPUT);
  pinMode(key4,INPUT);
}

void loop()
{
  if(digitalRead(key1)==0 && up_flag==0)//按鍵1為按一下加1
  {
   delay(20);
   while(digitalRead(key1)==0);
    keyval++;
   if(keyval>9) keyval=0;
   output(num[keyval]);
  }
 
  if(digitalRead(key2)==0 && up_flag==0)//按鍵2為按一下減1
  {
   delay(20);
   while(digitalRead(key2)==0);
    keyval--;
   if(keyval<0) keyval=9;
   output(num[keyval]);
  }
 
  if(digitalRead(key3)==0 )//按鍵3為自動上數0~9
  {
   stop_flag=0;
   up_flag=1;
  }
  if(up_flag==1)
  {
   delay(20);
   while(digitalRead(key3)==0);
    keyval++;
   if(keyval>9) keyval=0;
   output(num[keyval]);
   delay(1000);
  }

 
  if(digitalRead(key4)==0 && stop_flag==0)
  {
    up_flag=0;
    stop_flag=1;
  }
  if(stop_flag)
  {
    ;
  }
  delay(20);
}
void output(byte data)
{
  for(i=0;i<8;i++)
  digitalWrite(seg[i],bitRead(~data,i));
}

上下數 sw1 sw2

#define key1 A0
#define key2 A1
int keyval=0;
int i;
int j;

const char num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
const int seg[]={2,3,4,5,6,7,8,9};
void setup()
{
  for(i=0;i<8;i++)
  {
    pinMode(seg[i],OUTPUT);
  }
  pinMode(key1,INPUT);
  pinMode(key2,INPUT);
}

void loop()
{
  if(digitalRead(key1)==0)
  {
   delay(20);
   while(digitalRead(key1)==0);
    keyval++;
   if(keyval>9) keyval=0;
   output(num[keyval]);
  }
  if(digitalRead(key2)==0)
  {
   delay(20);
   while(digitalRead(key2)==0);
    keyval--;
   if(keyval<0) keyval=9;
   output(num[keyval]);
  }
  delay(20);
}
void output(byte data)
{
  for(i=0;i<8;i++)
  digitalWrite(seg[i],bitRead(~data,i));
}

button 每按一下加1

int i;
int j;
int keydata;
int key=0;
int sw=11;
const char num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
const int seg[]={2,3,4,5,6,7,8,9};
void setup() 
{
  for(i=0;i<8;i++)
  {
    pinMode(seg[i],OUTPUT);
  }
  pinMode(sw,INPUT);
}

void loop() 
{
  keydata=digitalRead(sw);
  if(keydata==0)
  {
   delay(20);
   while(digitalRead(sw)==0);
    key++;
   if(key>9) key=0;
   output(num[key]); 
  }
  delay(20);
}
void output(byte data)
{
  for(i=0;i<8;i++)
  digitalWrite(seg[i],bitRead(~data,i));
}

2019年8月27日 星期二

0~9 9~0閃爍顯示

/*
0~9 9~0閃爍顯示
*/
int i;
int j;
const char num[]={0xc0,0xFF,0xf9,0xFF,0xa4,0xFF,0xb0,0xFF,0x99,0xFF,0x92,0xFF,0x82,0xFF,0xf8,0xFF,0x80,0xFF,0x90};
const int seg[]={2,3,4,5,6,7,8,9};
void setup()
{
  // put your setup code here, to run once:
  for(i=0;i<8;i++)
  {
    pinMode(seg[i],OUTPUT);
  }
}

void loop()
{
  // put your main code here, to run repeatedly:
  for(j=0;j<19;j++)
  {
   output(num[j]); delay(1000);
  }
  for(j=18;j>=0;j--)
  {
   output(num[j]); delay(1000);
  }
}
void output(byte data)
{
  for(i=0;i<8;i++)
  digitalWrite(seg[i],bitRead(~data,i));
}

計數0~9(上數)

int i;
int j;
const char num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
const int seg[]={2,3,4,5,6,7,8,9};
void setup()
{
  for(i=0;i<8;i++)
  {
    pinMode(seg[i],OUTPUT);
  }
}

void loop()
{
  for(j=0;j<10;j++)  {  output(num[j]); delay(1000); }
}
void output(byte data)
{
  for(i=0;i<8;i++)
  digitalWrite(seg[i],bitRead(~data,i));
}

2019年8月26日 星期一

bitRead key1 key2 key3 key4

#define key1 A0
#define key2 A1
#define key3 A2
#define key4 A3
char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte seg7[]={9,8,7,6,5,4,3};
int i,j;
int mode=-1;
void setup()
{
  // put your setup code here, to run once:
  for(j=0;j<7;j++)
  {
    pinMode(seg7[j],OUTPUT);
  }
  pinMode(key1,INPUT);
  pinMode(key2,INPUT);
  pinMode(key3,INPUT);
  pinMode(key4,INPUT);

}

void loop()
{
  // put your main code here, to run repeatedly:
 if(digitalRead(key1)==0 && mode !=1) {mode=1;outport(~table[0]);}
 if(digitalRead(key2)==0 && mode !=2) {mode=2;outport(~table[1]);}
 if(digitalRead(key3)==0 && mode !=3) {mode=3;outport(~table[2]);}
 if(digitalRead(key4)==0 && mode !=4) {mode=4;outport(~table[3]);}
}
void outport(byte data)
{
  for(i=0;i<7;i++)
  {
    digitalWrite(seg7[i],bitRead(data,i));
  }
 }
例2:按6、7、8、9
#define key6 A0
#define key7 A1
#define key8 A2
#define key9 A3
char seg7Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte seg7Pin[]={9,8,7,6,5,4,3};
int i,j;
int mode=-1;
void setup()
{
  for(i=0;i<7;i++)
  {
    pinMode(seg7Pin[i],OUTPUT);
  }
  pinMode(key6,INPUT);
  pinMode(key7,INPUT);
  pinMode(key8,INPUT);
  pinMode(key9,INPUT);
}
void loop()
{
  if(digitalRead(key6)==0 && mode !=6)
  {
    mode=6;
    output(~seg7Table[6]);
  }
  if(digitalRead(key7)==0 && mode !=7)
  {
    mode=7;
    output(~seg7Table[7]);
  }
  if(digitalRead(key8)==0 && mode !=8)
  {
    mode=8;
    output(~seg7Table[8]);
  }
  if(digitalRead(key9)==0 && mode !=9)
  {
    mode=9;
    output(~seg7Table[9]);
  }
}
void output(byte data)
{
  for(i=0;i<7;i++)
  {
    digitalWrite(seg7Pin[i],bitRead(data,i));
  }
}


按鍵key1 key2 key3

#define key1 A0
#define key2 A1
#define key3 A2
byte seg7[]={9,8,7,6,5,4,3};
int i,j;
int mode=-1;
void setup()
{
  // put your setup code here, to run once:
  for(j=0;j<7;j++)
  {
    pinMode(seg7[j],OUTPUT);
  }
  pinMode(key1,INPUT);
  pinMode(key2,INPUT);
  pinMode(key3,INPUT);
}

void loop()
{
  // put your main code here, to run repeatedly:
 if(digitalRead(key1)==0 && mode !=1) {mode=1;outport(0x71);}
 if(digitalRead(key2)==0 && mode !=2) {mode=2;outport(0x6D);}
 if(digitalRead(key3)==0 && mode !=3) {mode=3;outport(0x7C);}
}
void outport(byte data)
{
  for(i=0;i<7;i++)
  {
    digitalWrite(seg7[i],bitRead(data,i));
  }
 }

2019年8月21日 星期三

HFS

https://pgl823.com/hfs/
Http File Server,簡稱:,它是一套簡易的架站軟體,讓你的電腦瞬間變成可以上傳、下載的,它完全不需要繁雜的安裝程序,純粹就是一個小程式,執行之後就可以直接使用了,分享後大家只要用網頁瀏覽器(IE、Google Chrome、Firefox…等)來連線,整個超簡單,讓不擅長使用FTP架設伺服器的人輕鬆分享檔案,想知道怎麼分享檔案和上傳檔案,就繼續往下看教學喔!

自走車












































































































2019年8月19日 星期一

P7-5 開關4練習

#include "reg51.h"
unsigned  char code  P1table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;
sbit dip_sw1=P0^0;
sbit dip_sw2=P0^1;
void delay_1ms(int);
void delay_1ms(int k)
{
 int i,j;
 for(i=0;i<k;i++)
  for(j=0;j<114;j++)
       ;
}
main()
{
P1=0xFF;
  while(1)
  {
    if(dip_sw1==0 && dip_sw2 ==1)
    {
     for(i=0;i<8;i++)
     {
      P1=~P1table[i];
      delay_1ms(1000);
     }
    }
    else if(dip_sw1 == 1 && dip_sw2 == 0)
    {
     for(i=7;i>=0;i--)
     {
      P1=~P1table[i];
      delay_1ms(1000);
     }
    }
  else if(dip_sw1 ==0 && dip_sw2==0 || dip_sw1 ==1 && dip_sw2==1)
  {
  P1=0xFF;
  delay_1ms(1000);
    }
  }
}

P7-5 第三題左右移閃爍燈

#include "reg51.h"
unsigned  char  P1table1[]={0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x00};
unsigned  char  P1table2[]={0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00};
int i;
sbit dip_sw1=P0^0;
void delay_1ms(int);
void delay_1ms(int k)
{
 int i,j;
 for(i=0;i<k;i++)
  for(j=0;j<114;j++)
       ;
}
main()
{
  while(1)
  {
    if(dip_sw1==0)
  {
   for(i=0;i<16;i++)
   {
    P1=~P1table1[i];
    delay_1ms(1000);
   }
  }
  else if(dip_sw1 == 1)
  {
   for(i=0;i<16;i++)
   {
    P1=~P1table2[i];
    delay_1ms(1000);
   }
  }
 }
}

p7-5 ex3

#include "reg51.h"
unsigned  char  P1table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned  char  P1table2[]={0xFF,0x00};
int i;
sbit dip_sw1=P0^0;
void delay_1ms(int);
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
      ;
}
main()
{
  while(1)
  {
if(dip_sw1==0)
{
for(i=0;i<8;i++)
{
P1=~P1table1[i];
delay_1ms(1000);
}
}
else if(dip_sw1 == 1)
{
      for(i=0;i<2;i++)
{
P1=P1table2[i];
delay_1ms(1000);
}
}
  }
}

dip_sw ex

#include "reg51.h"
unsigned  char  P1table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;
sbit dip_sw1=P0^0;
void delay_1ms(int);
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++)
      ;
}
main()
{
  while(1)
  {
    if(dip_sw1==0)
{
for(i=0;i<8;i++)
{
P1=~P1table[i];
delay_1ms(1000);
}
}
else if(dip_sw1 == 1)
{
for(i=7;i>=0;i--)
{
P1=~P1table[i];
delay_1ms(1000);
}
}
  }
}

2019年8月10日 星期六

switch

#include <stdio.h>
#include <stdlib.h>
int main()
{
  char ch;
  scanf("%c",&ch);
  switch(ch)
  {
    case 'f':
             printf("file");
             break;
    case 'e':
             printf("edit");
             break;
    case 'r':
             printf("run");
             break;
    default:
             break;
  }
    return 0;
}

Atmel Studio操作


2019年8月9日 星期五

asembly

         ORG 0000h
MOV A,#11110000B
LOOP:MOV P1,A
         CPL A
MOV R4,#10
ACALL Delay0
SJMP LOOP
Delay0:MOV R5,#24
Delay1:MOV R6,#100
Delay2:MOV R7,#100
Delay3:DJNZ R7,Delay3
              DJNZ R6,Delay2
      DJNZ R5,Delay1
      DJNZ R4,Delay0
      RET
     END

2019年8月8日 星期四

8051 test

/* 多重按鈕開關 */
//==宣告區================================
#include // 定義8051暫存器之標頭檔,P2-17~19 
#include "myio.h" // 自己寫的I/O程式庫 
sbit PB1=P2^0; // 宣告PB1=P2.0
sbit PB2=P2^1; // 宣告PB2=P2.1
sbit PB3=P2^2; // 宣告PB3=P2.2
sbit PB4=P2^3; // 宣告PB4=P2.3
//==主程式================================
main() // 主程式開始 
{

 LED=0xff; // 初始狀態(LED全滅)
  P2=0xff; // 規劃P2輸入埠 
while(1) // 無窮迴圈,程式一直跑 
{

 if (PB1==0) // 如果按下PB1
 {

   debouncer();// 防彈跳 
  alter(3); // 高低位元交互閃爍三次 
  flash(3);} // 全燈閃爍三次 
 else if (PB2==0)// 如果按下PB2
 {

   debouncer();// 防彈跳 
   left(3); // 單燈左移三圈 
   flash(3);} // 全燈閃爍三次 
else if (PB3==0)// 如果按下PB3

  debouncer();// 防彈跳 
 right(3); // 單燈右移三圈 
 flash(3);} // 全燈閃爍三次 
else if (PB4==0)// 如果按下PB4

 debouncer();// 防彈跳 
 SEG(3); // 霹靂燈三圈 
 flash(3);} // 全燈閃爍三次 
} // while迴圈結束 
} // 主程式結束 


/* myio.h - 自己寫的程式庫 */
//==宣告區==============================
#define LED P1 // 定義LED接至Port 1
void debouncer(void); // 宣告防彈跳函數 
void delay10ms(int); // 宣告10毫秒延遲函數 
void alter(int); // 宣告交互閃爍函數 
void left(int); // 宣告單燈左移函數 
void right(int); // 宣告單燈右移函數 
void pili(int); // 宣告霹靂燈函數 
void SEG(int); // 宣告7 
//==自己寫的副程式========================
/* 防彈跳函數函數,延遲約20ms */
void debouncer(void) // 防彈跳函數開始 
{

  delay10ms(2); // 延遲約20ms 
} // 防彈跳函數結束 
/* 延遲函數開始,延遲約x 10ms */
void delay10ms(int x) // 延遲函數開始 
{

  int i,j; // 宣告整數變數i,j
  for (i=0;i for (j=0;j<1200;j ); // 計數1200次,延遲約10ms 
} // 延遲函數結束 
/* 高低位元交互閃爍函數,執行x次 */
void alter(int x) // 高低位元交互閃爍函數開始

 int i; // 宣告變數i
 LED=0x0f; // 初始狀態(高位元亮,低位元滅)
 for(i=0;i<2*x-1;i )// i變數for迴圈執行2x-1次 
{

 delay10ms(50); // 延遲50*10m=0.5s
 LED=~LED; // LED反相輸出 
} // i變數for迴圈結束 
delay10ms(50); // 延遲50 10m=0.5s 
} // 高低位元交互閃爍函數結束 
/* 全燈閃爍函數,執行x次 */
void flash(int x) // 全燈閃爍函數開始
{

 int i; // 宣告變數i
 LED=0x00; // 初始狀態(全亮)
for(i=0;i<2*x-1;i )// i變數for迴圈執行2x-1次 
{

 delay10ms(50); // 延遲50 10m=0.5s
 LED=~LED; // P0反相輸出
} // i變數for迴圈結束 
delay10ms(50); // 延遲50 10m=0.5s 
} // 全燈閃爍函數結束 
/* 單燈左移函數,執行x圈 */
void left(int x) // 單燈左移函數開始
{ int i, j; // 宣告變數i,j
for(i=0;i { LED=0xfe; // 初始狀態=1111 1110
for(j=0;j<7;j )// j迴圈,左移7次 
{ delay10ms(25); // 延遲25 10m=0.25s
LED=(LED<<1)|0x01; // 左移1位後,LSB設為1
} // j迴圈結束 
delay10ms(25); // 延遲25 10m=0.25s
} // i迴圈結束*/
} // 單燈左移函數結束 
/* 單燈右移函數,執行x圈 */
void right(int x) // 單燈右移函數開始 
{ int i, j; // 宣告變數i,j
for(i=0;i { LED=0X7f; // 初始狀態=0111 1111
for(j=0;j<7;j )// j迴圈,右移7次 
{ delay10ms(25); // 延遲25 10m=0.25s
LED=(LED>>1)|0x80; // 左移1位後,MSB設為1
} // j迴圈結束 
delay10ms(25); // 延遲25 10m=0.25s
} // i迴圈結束 
} // 單燈左移函數結束 
/* 霹靂燈函數,執行x圈 */
void SEG(int x) // 7函數開始 
{int i;
/* 七段顯示器資料區*/
unsigned char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};


{
for(i=0;i<10;i ) //重複執行10次

P0=table[i]; //將table值取出後送至P2
delay10ms(25); //延遲500ms 

}
}

2019年8月4日 星期日

button

int buttonPin =2;
int ledPin=3;
int buttonState;
void setup()
{
  // put your setup code here, to run once:
  pinMode(ledPin,OUTPUT);
  pinMode(buttonPin,INPUT);
}

void loop()
{
  // put your main code here, to run repeatedly:
  buttonState=digitalRead(buttonPin);
  if(buttonState==LOW)
  {
    digitalWrite(ledPin,LOW);
  }
  else
  {
    digitalWrite(ledPin,HIGH);
  }
}

algorithm

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