写单片机程序数据类型相关

发布者:书香墨意最新更新时间:2017-01-19 来源: eefocus关键字:单片机程序  数据类型 手机看文章 扫描二维码
随时随地手机看文章

最近在调试单片机程序,总是遇到一些开始认为不可思议的事情,后来解决了问题后发现,都是因为自己书写程序不严谨,其主要原因是没有注意c语言的数据类型的数据范围。

对有符号、无符号数据的使用存在误区,对类型转换理解不到位。下面就举例一一说明:

1:一个简单的for循环,但因为数据溢出导致进入死循环,无法实现相应功能。

unsigned char i;

for(i=0;i<256;i++)

语句;

咋看起来这语句没有什么问题。但仔细考虑发现,i在此循环中会溢出,i的值 0---255---0----255----0-----------。

2:在循环里还需要注意的是有符号数和无符号数进行比较时:


unsigned char i;

i=230;

if(i>-5)

当无符号和有符号数进行比较时,会把无符号数转换为有符号数,i=230转换成有符号数是-26  因此if条件不成立。

3:使用printf或sprintf时,注意要打印的数值的数据类型,否则打印出来的不是你需要的。

4:注意在各个函数参数或者其他赋值时的数据类型的默认转换。考虑清楚的类型不匹配时,和默认类型转换不符时,可以使用强制类型转换。

5:昨天调试一个单片机汉字显示程序时,遇到数据简单运算结果不对的情况。

uchar ch0,ch1;

uint32 offset;

offset=(uint32) (HZ_BASE_ADDR+((((ch0 - 1) * 94) + (ch1 - 1))*32));      这个语句算出的结果不对,开始不理解,后来发现还是数据类型的问题。原因是ch0是无符号字符类型的,因此((ch0 - 1) * 94) 的结果溢出。导致出错。修正方案:offset=(uint32) (HZ_BASE_ADDR+((((ch0 - 1) * 94L) + (ch1 - 1))*32L));  添加强制转换,把立即数强制为long int型数据,根据c语言默认数据类型提升方案,其他参与运算的数值也转换为long int型。问题解决。


关键字:单片机程序  数据类型 引用地址:写单片机程序数据类型相关

上一篇:单片机FLASH与RAM、ROM的关系
下一篇:单片机c语言XBYTE的使用

推荐阅读最新更新时间:2024-03-16 15:31

用c语言编写单片机流水灯程序详解
用C语言编写的单片机流水灯程序的软件和硬件,可以让八个LED轮流点亮,每个灯点亮和熄灭时间均为1秒。是利用单片机I/O口控制外部设备的简单例子。当然,在你掌握了本程序后,完全可以充分发挥你的想象,改变一下程序内容和灯的接法(比如用光耦驱动继电器来控制霓虹灯),做出各种变化非凡的大型灯光广告牌。 一、硬件电路 因为电路用单片机控制,所以电路非常简洁。其电路原理图见下图,印制板图如下图所示。 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口,我们这里只用到Pl口,共8个引脚。图中Cl、R9组成典型的上电复位(即在加电时单片机复位)电路,XTAL、C2、C3与AT89C2051片内振荡电路组成时钟振荡器
[单片机]
用c语言编写<font color='red'>单片机</font>流水灯<font color='red'>程序</font>详解
51单片机课程设计——led点阵广告牌程序设计
上学期期末的课设题目是led点阵广告牌,当时的要求如下: (1)能够显示不同字符的LED点阵广告牌; (2)按键切换不同的显示效果(如闪烁,静止,平移等); (3)按键切换不同的显示内容; (4)能够显示图形或自定义字符; (5)其他功能(创新部分); (6)系统调试、分析、总结与功能实现。 当时用的是我用是的普中科技的STC90C51RD+的单片机,不过只要是51单片机,换哪个51内核的芯片都可以,只要电路和程序匹配就可以。 我用的那款普中科技的51单片机可以直接连线决定线路的布置,不需要自己去重新焊一个电路板。 然后我根据任务要求连接了电路,写了对应的程序,还有proteus仿真。 另外,觉得有趣可以点个赞;有什么
[单片机]
51<font color='red'>单片机</font>课程设计——led点阵广告牌<font color='red'>程序</font>设计
单片机程序远程下载方法(包括STC单片机
简介:在某些特殊的场合单片机程序、软件需要进行远程下载,特别是单片机程序的远程升级。本文介绍一种使用串口转以太网模块ZLSN3000来实现51单片机(特别是STC单片机)、PIC单片机、ARM、AVR、PLC的程序远程升级的方法。 1.原理 1.1升级条件 任何能够通过PC机串口下载程序的单片机都可以用该方法实现远程程序升级。目前该方案已经在STC单片机、PIC单片机、ARM上验证。 1.2硬件连接图 如图 1 所示是通过Internet远程升级STC单片机程序的演示图。在设备端,使用卓岚ZLSN3000模块将STC单片机的串口(2根线)和ZLSN3000的RXD、TXD引线直接连接;ZLSN3000的网口连接到ADSL
[单片机]
<font color='red'>单片机</font><font color='red'>程序</font>远程下载方法(包括STC<font color='red'>单片机</font>)
单片机实验板2011_V1.1-ADC0809练习程序
原理图: ADC0809控制时序: 测试程序 /************单片机教学实验板 ******************/ /*功能描述:ADC0809练习 */ /*作者:郑 文 */ /*编写时间:2011.3.1 */ /*接外部晶振11.0592 MHZ */ /*功能描述*/ //AD采集声音 LED输出 #include reg52.h #include STC_Delay.h #include stdio.h #include stdlib.
[单片机]
<font color='red'>单片机</font>实验板2011_V1.1-ADC0809练习<font color='red'>程序</font>
PIC16F72单片机---中断测试程序
/*************PIC16F72单片机程序******************************/ /*************************************************************/ /*****File Function : 中断练习程序 *****/ /*****Program Author : ZhengWen(ClimberWin) *****/ /*****MCU : PIC16F72 外部晶振6MHZ *****/ /*****Compile Date : 2010/11/9 ****
[单片机]
ZQ9712单片机汇编控制源程序
;************IC:ZQ9712************** ;编缉: 版本:1.0 时间:2005.9.30 ;功能: 七种模式 1.七色段填充 ; 2.七色单填充 ; 3.七色整体变化 ;****10米**** 4.七色段慢追 ; 5.七色段快追 ; 6.七色流水 ; 7.七色浪涌 ;*********一般寄存器************* p5==0x05 p6==0x06 iocb==0x0c iocd==0x0d pc==0x02 status==0x03 ;*********位定义********** c==0 z==2 data==0 LI==2 clk==1 ;*********自定义*********
[单片机]
51单片机串口T1加看门狗程序
数码管部分的电路图 程序: #include reg52.h #define UCHAR unsigned char #define UINT unsigned int sfr WDT_CONTR = 0xe1; UCHAR table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; UCHAR timer; UCHAR conter; void initserial(void) { timer='0'; conter=0; TMOD=0X20; SCON=0X50; TL
[单片机]
51<font color='red'>单片机</font>串口T1加看门狗<font color='red'>程序</font>
智能仪器电源的MCU控制程序设计
智能仪器电源的MCU控制程序设计 介绍一种仪器仪表电源供电程序的设计方法,提供了硬件框图及软件程序。   关键词:电源;程序设计;单片机 2.UAV of BUAA, Beijing 100083, China) ?   在备用电源供电的情况下,如果交流电220V又重新恢复,则K断开,DCAC=1,“交流”指示灯亮,“电池”指示灯灭,不发出报警声,ALARM=0。   另外,在仪器工作的同时,备用电源是否充电由CHARGE来控制。当电池电压小于某个参数值时,CHARGE=1,开始充电,“充电”灯亮。它还可以对备用电源的充电时间进行控制,对其输出电压进行检测,随时进行报警提示,以保证仪器的可靠工作。?   
[模拟电子]
智能仪器电源的<font color='red'>MCU</font>控制<font color='red'>程序</font>设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved