2019年10月19日 星期六

0000~9999

1.軟體,七段細節,C語言功力(有深有淺,鑑別度)、心法標準寫法背出程式碼,核心考七段顯示器、走馬燈、按鍵。
2.點關鍵,背7段顯示碼共有四組,看你有幾組act如果6就改6
3.char code act[4]={0xfe, 0xfd, 0xfb, 0xf7};   /* p1.0--p2.3   0111  1011  1101 1110 只有一個0掃瞄技巧之一*/
4.8051能夠用標準byte不到180幾個,這是關鍵
  4-1code程式碼64K(固定不變的),code不佔記憶體空間
  4-2 data 變數用太多會當機
5.延遲時間長的差不多
delay(int d)
{
int i, j;
 for(i=0; i<d; i++)
    for(j=0; j<100; j++)  ;
}
6.測試硬體 led閃爍1次
/*----------------------------*/
led_bl()
{
int i;
 for(i=0; i<1; i++)
  {
   wled=0;  delay(50);
   wled=1;  delay(50);
  }
}
/*----------------*/
7.
char code DATA_7SEG[16]={0xc0, 0xf9, 0xa4, 0xb0, 0x99,
                                                 0x92, 0x82, 0xf8, 0x80, 0x90,     
                                                 0x88, 0x83, 0x46, 0xa1, 0x86, 0x8e};
char data disp[4];
/*----------------*/
init_buf()
{
int i;
  for(i=0; i<4; i++)    disp[i]=DATA_7SEG[0];//初始化設為0
}
/*------------------*/
8.此行要背,計時0中斷程式碼,計時0中斷是8051核心,專門中斷顯示七段顯示器(案件,背兩個副程式),用自己的講法
void t0isr(void) interrupt 1 using 1
{
/* 2 mS ISR...scan 1 time    2000us=2ms*/
  TH0=hi;
  TL0=lo;

/* 5 mS ISR...scan 1 seg */
   P0=disp[di];
   P1=act[di];  //P1 scan data not P2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   di++;//di=di+1
   if(di==4) di=0;//他是週期性,4就要歸0
}
/*------------------*/
9.中斷初始化
init_t1()
{
/* mode 1  2(5)ms ISR */
 value=65536-2000;//人的eye有視覺暫留feeling
 TH0=hi=value/256;//hi傳輸變數
 TL0=lo=value%256;

 TMOD=0x01;
 IE=0x82;
 TR0=1;//TR0啟動
}
10.秀10位資料,傳c進去,所以顯示0000 1111 2222 3333 4444 5555 6666 7777 8888 9999
show_data(char c)
{
int d;
 d=DATA_7SEG[c];
 disp[0]=d;
 disp[1]=d;
 disp[2]=d;
 disp[3]=d;
}
/*------------------*/
11.
test_seg()
{
int i;
  for(i=0; i<10; i++)
   {
    show_data(i); 
    delay(500);//delay 0.5秒
   }
}
//----------------------------
12.評做1小時
    12-1 Arduino都用lib包好了
    12-2 8051從無到有
13.外部中斷、計時中斷最好不要同時用(同時啟動參數),不好debug,非必要不要同時用
14.考古題(理解完後要寫的出來0000~9999),掌控7段顯示器,看什麼題目~程式碼,功能對就好,抓重點,看了幾十場,看幾個動作,考試mean,充分準備,心定下來一題題解例:七段背出來,5min解一個功能
13.1萬個小時,練成就成為專家

沒有留言:

張貼留言

algorithm

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