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萬個小時,練成就成為專家
沒有留言:
張貼留言