0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机编程中四种常见问题汇总

电子工程师 作者:工程师a 2018-05-26 03:44 次阅读

1、指向code区数组的指针也要加 code 关键字声明。

比如 unsigned char code arr[30]; 数组,要用指针指向它,要把指针也声明成 unsigned charcode*p;

后来使用发现其它很多地方使用是不需要这样声明的,只要 unsigned char *p;就行了,但是清楚地记得那次确实是要加 code 关键字声明才可以的。

2、在51里面,位变量貌似是有限的。

如果要用一个布尔型作为标识变量,为了节省控件可以用 bit 型变量,但是在DRS1000项目中遇到过一次用 bit 型变量出错,改为 unsigned char 型就OK了,那时定义的变量已经很多了,可能是把可以用bit寻址的存储区都用光了吧。

3、用机械开关触发INT中断时:

由于机械开关会震动,产生的电压会有毛刺,这些毛刺会多次触发中断。会造成多次触发的因素有两点:

(1 )开关按下时的震动。第一次低电平到来时会进入中断处理程序,之后就算这些震动在中断处理程序执行的过程中产生,即使进入中断处理程序后关掉了总中断,这些毛刺仍然会使中断标志位置位,会在结束中断处理程序结束后再次马上触发中断处理程序。

(2 )开关释放时的震动。在第一次高电平到来时会退出中断处理程序,之后的毛刺会再次进入中断处理程序。

解决办法:

在中断处理程序的最后加一段低电平等待代码,等待低电平结束再延时5ms(为了消除开关释放时毛刺的干扰),5ms延时结束后再清除中断标志位(在中断处理程序执行的过程中可能已经再次触发了中断标志位)。代码如下:

void int0() interrupt 0

{

/*Do something*/

while(rollRA==0);//等待低电平结束

delay5(1);//等待按键释放的毛刺结束

IE0=0; //清除中断标志位,以防再次进入中断

}

4、对于15系列单片机,在使用串口时必须要指定AUXR寄存器的值,否则程序无法正常运行。

这个情况遇到过很多次,15系列单片机只要使用到串口就一定要知名AUXR寄存器的值,不像12系列那样可以把这个寄存器忽略。

在使用15系列单片机时养成了一个习惯:main 函数的第一句让 AUXR=0; ,后面串口在根据需要对其进行初始化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44482

    浏览量

    631738
  • 单片机编程
    +关注

    关注

    10

    文章

    49

    浏览量

    24614
收藏 人收藏

    评论

    相关推荐

    51单片机四种串行口工作模式怎么设置

    51单片机定时计数器溢出率计算和串口的波特率之间的关系51单片机四种串行口工作模式设置
    发表于 03-01 06:46

    单片机四种烧写方式是什么

    JTAG/SWD/ISP/SWIM详解单片机四种烧写方式单片机是一编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,
    发表于 07-01 06:40

    单片机四种输入模式

    单片机四种输入模式 MCU输入模式有浮空、上拉、下拉、模拟输入这四种模式,如果采用上拉或者下拉模式输入,岂不是把真实的信号强行变成电源VCC或者GND了?这四种模式分别在什么场合下使用
    发表于 08-24 16:19

    详解单片机四种烧写方式

    JTAG/SWD/ISP/SWIM详解单片机四种烧写方式单片机是一编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,
    发表于 01-27 06:57

    使用单片机四种方法实现的LED闪灯程序资料免费下载

    本文档的主要内容详细介绍的是使用单片机四种方法实现的LED闪灯程序资料免费下载。
    发表于 07-09 08:00 4次下载
    使用<b class='flag-5'>单片机</b><b class='flag-5'>四种</b>方法实现的LED闪灯程序资料免费下载

    四种单片机按键设计方案

    单片机系统里,按键是常见的输入设备,在本文江介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设计上,一般有四种方案:一是GPIO口直接检测单个按键,如图1.1所示;二是按键较多则使用矩阵键盘
    发表于 11-05 12:51 15次下载
    <b class='flag-5'>四种</b><b class='flag-5'>单片机</b>按键设计方案

    单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两波形)

    在Proteus单片机课设基于AT89C52单片机的波形发生器仿真(四种波形)(同时输出两波形)百度网盘链接免费资源下载proteus仿
    发表于 11-21 15:36 47次下载
    <b class='flag-5'>单片机</b>课设基于51<b class='flag-5'>单片机</b>的波形发生器(公开资源)(<b class='flag-5'>四种</b>波形)(同时输出两<b class='flag-5'>种</b>波形)

    基于单片机四种波形发生器仿真设计-毕设课设

    基于单片机四种波形发生器仿真设计-毕设课设
    发表于 11-22 18:51 54次下载
    基于<b class='flag-5'>单片机</b><b class='flag-5'>四种</b>波形发生器仿真设计-毕设课设

    单片机四种烧写方式

    JTAG/SWD/ISP/SWIM详解单片机四种烧写方式单片机是一编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,
    发表于 11-24 18:21 7次下载
    <b class='flag-5'>单片机</b>的<b class='flag-5'>四种</b>烧写方式

    汇总常见单片机原厂代码仓库,值得收藏

    汇总常见单片机原厂代码仓库,值得收藏
    发表于 12-03 16:06 9次下载
    <b class='flag-5'>汇总</b><b class='flag-5'>常见</b><b class='flag-5'>单片机</b>原厂代码仓库,值得收藏

    JTAG/SWD/ISP/SWIM详解单片机四种烧写方式

    JTAG/SWD/ISP/SWIM详解单片机四种烧写方式单片机是一编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,
    发表于 12-03 18:36 20次下载
    JTAG/SWD/ISP/SWIM详解<b class='flag-5'>单片机</b>的<b class='flag-5'>四种</b>烧写方式

    单片机定时器常见两大应用问题解析

    常见问题进行实时解析,希望能够对各位新人工程师的学习提供一定帮助。 问题一:51单片机的T0、T1定时器四种工作方式各有什么特点? 在单片机定时器的应用过程
    发表于 02-11 10:49 2次下载
    <b class='flag-5'>单片机</b>定时器<b class='flag-5'>常见</b>两大应用问题解析

    四种防反接电路汇总

    四种防反接电路汇总
    的头像 发表于 05-29 09:56 1017次阅读
    <b class='flag-5'>四种</b>防反接电路<b class='flag-5'>汇总</b>

    总结:30个单片机常见问题解决办法!

    总结:30个单片机常见问题解决办法!
    的头像 发表于 10-17 17:46 3017次阅读
    总结:30个<b class='flag-5'>单片机</b><b class='flag-5'>常见问题</b>解决办法!

    单片机常见问题的解决思路和解决办法

    30个单片机常见问题解决办法!
    的头像 发表于 09-18 16:51 2342次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>常见问题</b>的解决思路和解决办法