您的位置 首页 > 数码极客

avr+单片机如何单步调试,51单片机单步调试

闲来没事,将自己以前学习AVR单片机的一些笔记给大家整理出来,方便大家来一起学习。也争取每周能整理几篇出来。

此处我使用的单片机是AVR系列的,芯片为Atmega328p,具体资源请查看官网上的该芯片的datasheet。

好的,闲话就不说了,直接上正题,对于单片机来说,可能对io口的操作是最基本的能力了。

  1. 首先我们来看一下位的操作

  • 按位或

    其实就是置位

    例如:PORTA |= 0x80;

只要有一个为1就为1了,是不是最高位置位了

  • 按位取反

    其实就是清位

    例如:PORTA &= ~0x80;

两个全为1才为1 ,是不是最高位清位了

  • 按位异或

    其实就是实现位的翻转

    例子:PORTA ^= 0x80

相同为0,不同为1, 是不是最高位翻转了

  • 按位与

    其实可以用来检测某一位是不是为1

    例子:if(PINA & 0x80)

就可以用来检测PA.7是不是为1了

下面来看几个简单的程序例子:

哦,在写demo程序之前,可能还需要来讲一点别的,

  • 我用的开发环境时winavr,然后使用usbasp将hex烧写进板子里面,不同的开发环境,可能使用的头文件有一些出入,后期我可能只展示一些核心代码了。

  • 可能还要讲一下控制io的寄存器

  • atmega328p 这个mcu的io口都是标准的双向口,这个和51是有区别的。

  • 在复位时,所有的端口都是高阻态,啥是高阻态,不知道可以度娘了。

  • 每一个端口,都对应3个寄存器,分别是:DDRx PORTx PINx

  • 来看看这三个寄存器的控制作用:

DDR : 选择引脚是输入还是输出

PORT : 当io口是输入的时候,它控制有无上拉电阻,当io口是输出的时候,它控制的输出的电平情况。

PIN :读管脚的电平

  • 总结一下:io口初始化三部曲:

  • 使用DDR来设置端口是输入还是输入

  • 要是输出的话,使用PORT来设置输出的是高电平还是低电平

  • 要是输入的话,使用PINx来读取管脚的输入值,同时可使用PORT来设置管脚是不是有上来电阻。不清楚上、下拉电阻的,以后我再出一个教程。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“avr+单片机如何单步调试,51单片机单步调试,51单片机keil软件单步调试的方法”边界阅读