摘要: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。 第 1 招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。 例如:字符串的赋值。 方法 A,通常的办法: #define LEN 32 char string1 [LE... 阅读全文
posted @ 2010-12-25 14:31 hnrainll 阅读(528) 评论(0) 推荐(1) 编辑
摘要: 一、前言 “程序设计”的真谛是什么?许多初学者的理解是“写代码”。但是,在匠人看来,把“程序设计”理解为“写代码”,就像把“电路设计”理解为“画PCB”一样。 新手们苦恼的问题是,他们只会“写代码”。他们一接到新的项目,总是在第一时间就爬到键盘上去敲代码。新手们的精力总是比较旺盛,他们加班加点,两天就把所有代码敲完。然后他们会用十倍或几十倍以上的时间去调试,中间伴随着几次三番的推倒重来。最后,他们... 阅读全文
posted @ 2010-12-25 12:41 hnrainll 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 我是初次使用PIC单片机,对PICC的编程规范不了解,在编译程序时老是出问题。现在介绍两个最常见的问题给大家,看看有没有和我遇到一样问题的。 错误1:变量定义赋值先后顺序问题很重要 开发环境为MPLAB IDE V7.43 + PICC 。如下两种代码书写方式,在补充完整之后,哪一个会编译出错?( flag_sendKeyByte 为全局位变量,已定义过) A: flag_sendKeyByt... 阅读全文
posted @ 2010-12-25 12:30 hnrainll 阅读(5581) 评论(0) 推荐(0) 编辑
摘要:             R     R      R     R     R     R          ─  ─   D/A    P     S    R/W    UA    BF    地址:94h上电值:00h          │  │   │    │    │    │    │    │          └┬┘   │    │    │    │    │    └────... 阅读全文
posted @ 2010-12-25 11:01 hnrainll 阅读(695) 评论(0) 推荐(0) 编辑
摘要: WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 地址:14h上电值:00h │ │ │ │ │ │ │ │ │ │ ├───────────── ─────┘ │ │ │ │ │ │ │ │ │ └── 同步串行口(SSP)模式选择 │ │ │ │ 0000= SPI主控模式,时针=OSC/4 │ │ │ │ 0001= SPI主控模式,时针=OSC/16 │ │ │ │ 0010= SPI主控模式,时针=OSC/64 │ │ │ │ 0011= SPI主控模式,时钟=TMR2输出/2 │ │ │ │ 0100= SPI从属模式,时钟=SCK脚输入, 阅读全文
posted @ 2010-12-25 10:56 hnrainll 阅读(753) 评论(0) 推荐(0) 编辑
摘要: 何谓读-修改-写,导致的问题及其解决之道: 只要PICmicro的命令,所处理的FILE (暂存器,内存,和I/O的统称),其最终的值,和命令处理前的值有关,那么,这种命令便是所谓的读-修改-写命令。因为这类命令的操作,可以再细分为三个小步骤,即是读(READ),修改(MODIFY),接著才是写(WRITE)。 如:ADDWF,DECF,IORWF,XORWF,BSF,BCF,‥‥等等皆是。 在... 阅读全文
posted @ 2010-12-25 09:45 hnrainll 阅读(487) 评论(0) 推荐(0) 编辑
摘要: /**************************** Title:PIC16F877A LED闪烁实验 Forum:http://bbs.cepark.com Author:hnrain Date:2010-12-11 Email:hnrain1004@gmail.com 知识重点: #define Setbit(y,x) y|=(1(x)) //setb(p1,2); p12=1; #define Clrbit(y,x) y&=~(1(x)) //clrb(p1,2); p12=0; #define Getbit(y,x) (0x01&(y(x))) //获取某一位值 ** 阅读全文
posted @ 2010-12-25 02:49 hnrainll 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 代码 阅读全文
posted @ 2010-12-25 02:08 hnrainll 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 代码 阅读全文
posted @ 2010-12-25 01:44 hnrainll 阅读(4084) 评论(0) 推荐(0) 编辑
摘要: 不管学什么东西,官方的资料都是最好的。PIC16F877A的官方资料,DATASHEET,相应功能模块的应用。非常的全。关键是还有中文版。http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010242 阅读全文
posted @ 2010-12-24 13:47 hnrainll 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 上周在做一个项目时,需要对测试数据实时的保存,以被重新上电后读取.采用了PIC的内部EEPROM,正常读取时没有什么问题.反复上电掉电就出现了EEPROM被清0(改写). 查阅相关资料:EEROM写过程包括两个阶段:先擦除(电压为20V) 再写入(电压18V);EEPROM在写入过程中如果电压不稳定,很容易导致错误.先使用了软件冗余法,同一个data写在连续3个地址,使用时比较,只有2个相同时才使用.这样做,反复上电掉电出错几率小了很多,但是还是会出错.在反复上电100多次时还是出错.另一个解决办法就是使能BOD,写EEPROM时,先检测BOD.网上一位兄弟使用此方法反复上电2000多次才错误 阅读全文
posted @ 2010-12-23 23:00 hnrainll 阅读(1024) 评论(0) 推荐(0) 编辑
摘要: //*************************************************************// |-| |-| |-|// | | | | | |// __| |________| |_______|_|_____------PWM1//// |----| |----| |----|// | | | | | |// __| |_____| |____| |_------PWM2//本实验利用PIC单片机的CCP模块功能产生PWM功能,PWM的周期为://(PR2+1)*4TOSC*(TMR2预分频值)//了解CCP模块的CCP1CON寄存器功能,//了解 阅读全文
posted @ 2010-12-23 01:58 hnrainll 阅读(1699) 评论(0) 推荐(0) 编辑
摘要: WDT TIMEOUT 的标准时间为18mSec,但是非常重要的一点,WDT TIMEOUT 的最小值为7~9mSec,而且会受温度的影响并且这个值不是测试值,而是计算值,请不要太相信.若你有使用WDT,建议在5mSec以内Clear WDT较好 注意芯片的LVP(低压编程使能)一定要禁止,如果你确实需要它开,你确认你的硬件有将PGM/RB3接地. 你的电源电压如果偏低就不要将BOD(低电压复位)开启配置位中的DEBUG(调试模试)也必须要禁止 阅读全文
posted @ 2010-12-23 01:24 hnrainll 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 对于51系统来说,很容易理解编程器和仿真器。通俗的说,仿真器是用来调试仿真的,编程器是用来批量生产时对MCU进行烧写目标代码的。对于MSP430来说,无论仿真还是烧写程序一般可以通过:JTAG、SBW、BSL接口进行。JTAG、SBW接口可以用于仿真接口,BSL接口不能用于仿真。而编程器则三种接口都支持。所以并不能说JTAG只支持仿真不支持编程,这是概念错误,JTAG仅仅是一种接口协议而已。下面简单描述一下三种接口的区别:1、JTAG是边界扫描技术,其在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430的内部数据地址总线上,所以可以用JTAG访问430内部的所有资源,包括对F 阅读全文
posted @ 2010-12-22 14:34 hnrainll 阅读(7063) 评论(0) 推荐(0) 编辑
摘要: zhwxc 发表于 2008-8-19 18:00 ST MCU ←返回版面 楼主:STM32 RTC 对晶振的要求实在不地道今天到电子市场找了一下,几乎都是12.5p负载电容的32768晶振,只有一家有少量,负载电容是6p,20ppm的晶振要价是12.5p晶振的5倍,而且从外观上也看不出来,也没有测试方法能测出负载电容是6p还是12.5p。卖晶振的老板在这行干了10几年,一说到6p的32768晶振就笑了。这个要求以前就有多个公司中过招,特别是DALLAS的片子,让一家公司吃尽了苦头,焊上的许多高精度12.5p晶振被迫全部换掉,订的数万只晶振也只能委托卖掉。老板说这种方式是IC厂家和大的晶振 阅读全文
posted @ 2010-12-22 13:39 hnrainll 阅读(5026) 评论(0) 推荐(0) 编辑
摘要: 应该说有三个主要特点:(1)总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。(2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线 阅读全文
posted @ 2010-12-22 01:12 hnrainll 阅读(454) 评论(0) 推荐(0) 编辑
摘要: PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机 PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*) 阅读全文
posted @ 2010-12-22 01:12 hnrainll 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 该程序功能上还有一定的缺陷,带晚上,初步实现功能代码 阅读全文
posted @ 2010-12-22 00:56 hnrainll 阅读(797) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://hi.baidu.com/very_knight/blog/item/40eed415a7588d00c93d6dbf.html#includepic.h#define uchar unsigned char#define uint unsigned int__CONFIG(0x3B31);const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar key_num;void delay(uint x);vo 阅读全文
posted @ 2010-12-21 16:57 hnrainll 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.pic16.com/bbs/dispbbs.asp?boardid=24&id=53801&page=6&move=next/*******************************************************************************Platform: PIC1687AProject : 实验16:矩阵式按键Clock F : 外部4MSoftware: PICCAuthor : 竹林清风comments:学习使用矩阵式按键的用法本例功能是按一下相应键,数码管显示相应的值0-9;不带连发,不带组合,希望有兴趣的人 阅读全文
posted @ 2010-12-21 16:55 hnrainll 阅读(870) 评论(0) 推荐(0) 编辑