AVR单片机入门--MEGA端口操作
int main(void)
{
unsigned char i,j,k; //
PORTA=0xFF; //PA口设为输出高电平,灯灭
DDRA=0xFF; //PA口设置为输出
while(1)
{
i=1;
for (j=0;j8;j++) //循环8次,即PA0~~PA7轮流闪亮
{
PORTA=~i; //反相输出,低电平有效,对应的灯亮
for (k=0;k10;k++) _delay(100); //延时 100*10=1秒,可自行调节 i=i1; //左移一位,I的值将向下面的列表那样变化
// 0b00000001 PA0
// 0b00000010 PA1
// 0b00000100 PA2
// 0b00001000 PA3
// 0b00010000 PA4
// 0b00100000 PA5
// 0b01000000 PA6
// 0b10000000 PA7
}
}
}[Copy to clipboard]
其他IO口操作指令:
void main(void)
{
PORTA=0xff;
DDRA=0xff; //输出 模式 ,IO口上拉电阻有效,1为输出,0为输入。
PORTA=0xf0; //等
以下三条指令只对操作符号右边的数字位是一的位操作。
PORTA=~0x70; //清零 0x70为 01110000 ,即把*三位清零,其余数位不变。
PORTA|=0x77; //置一 0x77为 01110111 ,即把*210六位清零,其余数位不变。
PORTA^=0x70; //翻转 0x70为 01110000,即*三位,如果是零变成1,是一变成0。
(P 0x80)==0x80; //按位与 判断p的第七位是否是一,是则成立
}
关于1
ADIF是一个寄存器变量,可以堪称数字4, 跟手册中的定义,包含芯片头文件的定义是一样的。
(1
ADCSR=(1
ADCSR|=(1
ADCSR=~(1
while(ADCSR(1
while(1)
{
while(ADCSR(1
{
程序......
}
}
实践出真知:只看这样的说明是很枯燥的,从实践中去学习会是更好的途径,把这些代码都写到单片机里,一步一步调试运行,看看各个端口以及寄存器的效果,也锻练程序调试能力,和乐而不为呢?
![](https://webstorage.eepw.com.cn/images/2014/m/wx.png)
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码