// 範例8-3C: 雙色8×8點陣字幕顯示字的顏色變化 // 檔名:ch8_3.C #include void delay1ms(int count); unsigned char code font1[]={0x22,0x24,0x28,0xF0,0x28,0x24,0x22,0x21, 0x3C,0x24,0x24,0xFF,0x24,0x24,0x3C,0x00, 0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, 0x81,0x8F,0x81,0xFF,0x91,0x91,0x91,0x81}; unsigned char code ctrl[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; // addr main() { unsigned char i,j,fdat; unsigned char code *ptr =font1; while(1){ for(j=0;j<40;j++) { ptr=font1+8*(j/10); // 掃描10次之後換字 for(i=0;i<8;i++){ P1=0xff ; // 關閉掃描線 共陽極 fdat=~*ptr++; // 取出字型資料,並自動指向下一個 if(j<20){ P0=fdat ; // 顯示紅色LED字 P2=0xff; // 關閉綠色LED字 } else{ P2=fdat ; //顯示綠色LED字 P0=0xff; //關閉紅色LED字 } P1=ctrl[i] ; delay1ms(1) ; // 時間延遲 } } } } //main void delay1ms(int count) { int i,j; for(i=0;i