這是一個常見的12864畫點函數
我完全看不懂switch那部分啊,為什么要左移動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); //寫入行坐標
- wr_cmd(Tier + 0x80); //寫入列坐標
- rd_dat();
- ReadOldH = rd_dat() ; //讀出原始數據
- 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 ; //翻轉
- default : break ;
- }
- wr_dat(ReadOldH); //寫入新數據
- 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);
- }
- }
復制代碼 |