menghaoran 发表于 2012-10-13 21:10:08

马潮老师的书籍 第198页 点阵显示控制的程序

        #include<avr/io.h>
        #include<avr/delay.h>
        flash char char_7={0x10,0x38,0x7C,0xFE,0x38,0x38,0x38,0x38};
       
        void display(char row)                  
        {
                char i;
                   for(i=0;i<=7;i++)         
                   {                           
                           if(row<=7)               
                             PORTA=char_7;   
                           else               
                      PORTA=0;               
               PORTC=~(1<<i);             
                        delay_ms(2);               
                        PORTC=0xFF;                                                                                                                                                
                        if(++row>=12)row=0;
                       
                   }
        }
                                               
        void main(void)
        {
                char time_counter,i=0;
                        PORTA=0x00;
                        DDRA=0xFF;
                        PORTC=0xFF;
                        DDRC=0xFF;
                       
                        while(1)
                        {
                                display(i);
                                   delay_ms(9);
                                   if(++time_counter>=4)
                                   {
                                           time_counter=0;
                                               if(++i>=12)i=0;
                                   }
                     };
        }



这段程序实现是一个向上箭头的动态显示,PA口控制col+,PC口控制ROW-,看来看去感觉是错误的。比如,执行display(i)时,i=0, PORTA=0X10,而PORTC=~(1<<i)后变成了0b1111 1110,无法实现图像啊
本人菜鸟,请高手指教,尤其是PORTC=~(1<<i) 是什么意思?

machao 发表于 2012-10-19 21:25:29

先把c语言的基础学好。
页: [1]
查看完整版本: 马潮老师的书籍 第198页 点阵显示控制的程序