马潮老师的书籍 第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) 是什么意思? 先把c语言的基础学好。
页:
[1]