这两天在调试一个项目的时候,一台主机与两台从机通信,但是有一台从机的报文收不到,仔细阅读代码,发现寄存器等配置都正常,自信阅读代码发现在清接收完成寄存器的时候用到了位域,猜想这就是问题所在,于是修改了程序,下载后一切正常。在单片机中一般的标志寄存器都是写1清0,好多中断标志等都是这样设计的,这时候就要注意在清除标志的时候不能用位域,因为好多单片机不不支持位操作的。
比如要清除IrqReg寄存器的BIT5,IrqReg.bit5 = 1;在没有位操作的单片机中会编译成
IrqReg |= BIT5;这条语句分三步执行,先读IrqReg寄存器,进行位或操作,最后把位或的结果写入该寄存器,这样问题就产生了,如果这句操作之前IrqReg中BIT5和BIT6都是置位的,那么写的时候本来是清除BIT5的现在BIT6也清除了,正确的操作应该是IrqReg=BIT5
这个问题在最开始学习AVR单片机的时候在AVR的技术手册中看到过,所以这次解决这个问题没有费太大的周折,要不然真是很难想到这里会出问题。
关键字:单片机 清除标志位 位操作
引用地址:
单片机在清除标志位时不要用位操作
推荐阅读最新更新时间:2024-03-16 16:05
基于单片机的彩灯设计方案
1.引言 随着人们对房屋的装饰需要彩灯,在许多城市可以看到彩色霓虹灯。LED彩灯由于其丰富的灯光色彩,便宜的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、电路复杂、功率损耗大等缺点。此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性。 全球气候暖化危机和能源紧缺在进一步推动LED照明的普及,LED照明具有环保、光效高和寿命长的特点,但在完全取代具有墙上型调光器的白炽灯方面,LED照明还存在兼容性差的先天不足。其主要原因在于: 1)现有的调光器都是针对白炽灯设计的,而白炽灯呈现的是纯阻
[单片机]
13. 外部中断实验
一。外部中断的概述 1. 对于51系列单片机只有2个外部中断输入引脚,外部中断0和外部中断1 而STM32的每一个IO口都可以作为外部中断输入。 2. STM32F103系列单片机中断控制器支持19个外部中断请求。 线0-15对应外部IO口的输入中断。 线 16:连接到 PVD 输出。 线 17:连接到 RTC 闹钟事件。 线 18:连接到 USB 唤醒事件。 3. 对于每一个中断线都可以独立的配置触发方式:上升沿,下降沿或双边沿触发。 二。 GPIO与中断线的映射 GPIO与中断线的映射关系图 GPIOx.0映射到外部中断线EXTI0 GPIOx.1映射到外部中断线EXTI1 ...... GPIOx.15映射
[单片机]
基于AVR高性能单片机的以太网接口设计
0 引 言 随着互联网的迅速发展,各种家电设备、仪器仪表也在逐步走向网络化,以便共享网络信息资源、远程监控等,这也是嵌入式系统发展的趋势。而以太网作为目前应用最为广泛的局域网,在工业自动化和过程控制领域得到了越来越多的应用,因此,对于大量存在的8位微控制器而言,实现以太网通信具有重要的实际意义。现在应用较多的是基于51内核单片机的上网方案,由于处理能力的限制,要实现较复杂的网络传输和控制有点困难。本系统采用ATMEL公司的高性能单片机Mega64和10 Mb/s以太网控制芯片RTL8019AS实现了以太网接口,详细介绍了硬件电路的连接以及嵌入 式TCP/IP的实现,使单片机具有了互联网络的接入功能。 1 硬件电路设计 1
[单片机]
高电流驱动LED系列微控制器【盛群半导体】
盛群半导体推出HT48R06xD与HT46R06xD高电流驱动LED系列MCU。HT48R06xD系列家族成员共3颗、HT46R06xD系列家族成员也有3颗,分別是HT48R064D与HT46R064D可直接驱动32颗LED、HT48R065D、HT46R065D、HT48R066D与HT46R066D可直接驱动64颗LED。LED驱动电流分別是Sink Current 60mA、Source Current -20mA且HT46R06xD內建有12-bit A/D与8-bit PWM,可減少周边零件、缩小PCB Size及降低成本,非常适合各式小家电、各类面板与带LED显示的应用。 HT48R06xD与HT4
[单片机]
玩转单片机,没有谁是菜鸟
最近一直没有更新博文,今天有时间去看了看,访问人数没有变化。此时才明白一件事,玩单片机没有谁会是菜鸟,只要你努力、只要你不放弃,总有一天你会成为老鸟。 最近一直在玩单片机,自己焊最小系统,自己焊流水灯,自己焊数码管,自己焊键盘。总之,就是为自己焊个51学习板,以后做小项目测试用。可能很多人会笑我,浪费时间又浪费钱。确实自己焊个学习板不比买的便宜,反而会花很多钱,最花钱的就是编程器。说到这肯定又有人笑了,孩子编程器没必要买的,STC单片机自带ISP在线可编程功能,确实能节省几百块呢。但是我用的是笔记本电脑,没有串口,只有USB。如果是为了省钱,买个USB转串口线自己搭接个ISP在线可编程电路,给STC单片机下载程序是完全可以的。也确实
[单片机]
MSP430单片机中的WDT研究
引 言 软件的可靠性一直是一个关键问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(Watchdog Timer)的利用是很有价值的。 1 看门狗的作用 看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使
[应用]
单片机C语言入门自学指南(前期准备)
很多学习单片机的伙伴们刚入手的时候都因为C语言卡壳了,也因此放弃了单片机的学习。 百度“单片机C语言”,一大堆的资料,一阵手忙脚乱,不知道如何筛选适合自己学习的资料,也不知道从何下手。 为了方便伙伴们尽快的掌握单片机C语言知识,今天我就给大家分享一下单片机C语言到底如何入门自学。 C语言是一种偏向底层的语言,更多的是应用在嵌入式领域,或者操作系统的开发,单片机只是C语言应用的一个小分支。 下面,我给大家简单的介绍一下单片机C语言入门前期准备: 1. 在某宝上,买个开发板:(推荐stc 51单片机开发板) 如果想更快地提升,无缝对接到工作,也可以通过无际单片机编程的课程,从项目实战中去学习。 2. 搭建单片机开发环境 很多
[单片机]
在进行单片机设计时需要注意哪些事项
1.降低外时钟频率 外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,以8051单片机为例最短指令周期1μs时,外时钟是12MHz。而同样速度的Motorola单片机系统时钟只需4MHz微控制器产生的最有影响的高频噪声大约是时钟频率的3倍。 2.低噪声系列单片机 改进的技术将电源、地安排在两个相邻的引脚上,外部去耦电容在PCB设计上更容易安排。 3.时钟监测电路、看门狗技术与低电压复位 时钟监控有效与省电指令STOP是一对矛盾。只能使用其中之一。 看门狗技术是监测应用程序中的一段定时中断低电压复位技术是监测单片机电源电压,当电压低于某一值时产生复位信号。由于单片机技术的发展,单片机本身对电源电压
[单片机]