|
|
這是一個(gè)常見(jiàn)的12864畫(huà)點(diǎn)函數(shù)
我完全看不懂switch那部分啊,為什么要左移動(dòng)7減Tier_bit。
哪位大佬可以給我講講
- void DrawPoint( unsigned char X, unsigned char Y, unsigned char Color )
- {
- unsigned char Row , Tier , Tier_bit ;
- unsigned char ReadOldH, ReadOldL ;
- Tier = X >> 4 ;
- Tier_bit = X & 0x0f ;
- if( Y < 32 )
- {
- Row = Y ;
- }
- else
- {
- Row = Y - 32 ;
- Tier += 8 ;
- }
- wr_cmd(Row + 0x80); //寫(xiě)入行坐標(biāo)
- wr_cmd(Tier + 0x80); //寫(xiě)入列坐標(biāo)
- rd_dat();
- ReadOldH = rd_dat() ; //讀出原始數(shù)據(jù)
- ReadOldL = rd_dat() ;
- wr_cmd(Row + 0x80);
- wr_cmd(Tier + 0x80);
- if( Tier_bit < 8 )
- {
- switch( Color)
- {
- case 0 : ReadOldH &=( ~( 0x01 << ( 7 - Tier_bit ))) ; break ; //不顯示
- case 1 : ReadOldH |= ( 0x01 << ( 7 - Tier_bit )) ; break ; //顯示
- case 2 : ReadOldH ^= ( 0x01 << ( 7 - Tier_bit )) ; break ; //翻轉(zhuǎn)
- default : break ;
- }
- wr_dat(ReadOldH); //寫(xiě)入新數(shù)據(jù)
- wr_dat(ReadOldL);
- }
- else
- {
- switch(Color)
- {
- case 0 : ReadOldL &= (~( 0x01 << ( 15 - Tier_bit ))) ; break ;
- case 1 : ReadOldL |= ( 0x01 << ( 15 - Tier_bit )) ; break ;
- case 2 : ReadOldL ^= ( 0x01 << ( 15 - Tier_bit )) ; break ;
- default : break ;
- }
- wr_dat(ReadOldH);
- wr_dat(ReadOldL);
- }
- }
復(fù)制代碼 |
|