历史上的今天
今天是:2025年02月13日(星期四)
2020年02月13日 | PIC8位在PICC中的数据类型
2020-02-13 来源:eefocus
简介:PIC8位MCU的内存都是8位字节结构的,所以PICC中对于数据的划分都是以8位为基础的。
在汇编中,我们对一个地址为0X20的内存附值:
movlw 255;
movwf 0x20;
但一个内存是8位结构,能表示最大的数是255。要是超过了会怎么样呢?
movlw 256;
movwf 0x20;
通过DEBUG后,可以看出0X20中的值不是256,而是0了。
这里可以看出PIC处理器计算过程是当计算结果超过内存能容纳的最大数(也就是所谓溢出),则自动抛弃最高位。
如下:
255 - 256
11111111-100000000
256的2进制有9位,于是PIC处理器就自动抛弃最高位1,剩下的8个0放入内存,于是就成了0了。这过程是由硬件自动完成的。
在PICC中象这样的概验比比都是。
如:char x;
for(x=255;x--;){;}
是完成255个循环。
要是for(x=256;x--;){;}
则是0个循环。
因为PICC中定义CHAR类型数据是8位。
再如:int x;
for(x=65537;x--){;}
则是只循环一次。因为PICC中INT数据是16位,占2个存储单位。
如上所述,在规划一个程序之前要考虑程序中可能涉及到的最大计算量来定义数据类型,不然将会发生溢出,导致数据混乱。
但也不可为了简便,全用长结构的类型来申明数据类型,不然会导致计算时间慢,空间占用多。
如X可能大于255,但不会大于65535,那么申明:unsigned int x;
如果X可能会是负数就一定要定义int x;
同上要是X可能大于65535,那么就得定义long x;
浮点数是一个很特殊的类型,不需要了解它的构造,只需要了解它是一个24位或32位的存储结构,是一个能表示小数的数据类型,浮点表示的数字范围极大,所以在用浮点类型时候,不需要考虑是否溢出的问题。
史海拾趣
|
Gem micro semiconductor Inc. GM8205A Pb free Pb Dual N-Channel High Density Trench MOSFET (20V, 6.0A) PRODUCT SUMMARY VDSS ID RDS(on) (m-ohm) Max 28 @ VGS =4.0V, ID=6.0A ...… 查看全部问答> |
|
我已经能让模块登陆网络,并能获取到模块登陆的IP地址,但是使用BENQ M32 AT$DESTINFO 链接服务器的时候出错 不知道怎么回事? AT+CGDCONT=1,\"IP\",\"CMNET\" OK AT%CGPCO=1,\"PAP,,\", 1 OK AT$DESTINFO=\"115.46.37.254\" ,1,1029 EXT: I ...… 查看全部问答> |
|
不知道怎么回事,俺第一次做SD卡,但是碰到了很大麻烦。 用ADS裸机测试程序没有问题。 但是弄到PB下面却不行了(微软的驱动)-------看不见SD卡盘符,串口打印信息也有问题。 平台描述 2440+512M nand flash+1G MicroSD卡 wince5.0+由4.2升至5 ...… 查看全部问答> |
|
请教各位大虾: GPS模块里1PPS的上升沿和串口收到的信息是同步的还是有些时间差?先后时间顺序是啥关系? 如何保证收到的时间和1pps上升沿同步? ...… 查看全部问答> |
|
tcp_recved: recveived 2 bytes, wnd 4096 (0). blankname!----A 123.txt----A 432.txttcp_write(pcb=20006e88, data=20009258, len=30, apiflags=0) tcp_enqueue(pcb=20006e88, arg=20009258, len=30, flags=0, apiflag ...… 查看全部问答> |
|
在超低功耗时钟DIY的过程中,大家对于时钟源经行过讨论,这个时钟所用到的时钟源到底是使用32768Hz的晶体还是使用专用的时钟芯片比如DS1302。最后我们选定的方案是带上DS1302用于时钟的校对,这个考虑主要是出于时钟的准确的考虑,但是这样一来就多 ...… 查看全部问答> |
|
浅析视频会议终端系统市场动态与前景2012年06月11日 投影时代 视频会议终端市场正面临着巨大的转变。几年以前,机顶盒和移动系统在视频会议市场中占据了主导地位,它们主要都是通过ISDN连接,然而当今的市 ...… 查看全部问答> |
|
昨天上午看的视频,特权的按键消抖,想了好久,到现在终于弄明白了,下面是我理解的方式: 先上他的程序: module key_led(clk,rst_n,sw1_n,sw2_n,sw3_n, led_d3,led_d4,led_d5, Q1,Q2,Q3,Q4,Q5, ...… 查看全部问答> |




