第一章 PIC单片机的结构和指令系统
发现张工对banksel,bankisel,pagesel不太感冒...
今天,在高奇的网站上,有人问我banksel和pagesel是什么?我没有回复,也不准备回复... 搞汇编的连这2个"玩意"也不用,我不敢想出他能编出什么好的程序,除非他是个记忆力非常好的天才... 当变量多且不在一个块(体)时,我不相信有谁能记住哪个变量在哪个bank中...也许我是个弱智吧,反正我是记不清...
由于PIC的特殊性,所以,我认为banksel和pagesel是首要掌握的技能之一...
感觉都写些PIC最致命的地方和弱点...
第二章 PIC单片机的特色
这句话我爱听--"实际上能用软件关闭的看门狗并不能算真正的看门狗"(P60)
这个也许是我放弃EMC单片机应用的最大原因...其他可关闭看门狗的MCU我一般都加个外狗... http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=731408 http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=728766
这句话我不太喜欢听--"绝对不能把这条指令放在中断服务程序中"(P61) 注:这条指令就是喂狗指令clrwdt
http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=1288939
http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1370598 http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1292077
http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=1286144
http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=1289654
第三章 PIC单片机的开发环境
在本章中,张工详细讲述了banksel,bankisel,pagesel三条宏指令的用法. MPLAB IDE 5.7前的banksel不太聪明(可能是我苯吧),现在的MPLAB IDE 6.6不知如何???
既然想当PICC菜鸟,也就不想了解他们的聪明程度了... 但新一代的MPLAB IDE确实非常好用,特别是对汉字的中文注解. 而且编译速度要快了许多.缺点好像放弃了对ICD的支持...
第四章 PIC单片机的开发工具 农民手头不是很宽松,只能用些ICD,ICD2...高档的玩不起... 只要相信自己,我想就是不要开发工具,只要软仿真可能就会搞定...
第五章 PIC单片机的I/O口及其灵活应用
第六章 PIC单片机的定时器资源及其应用
第七章 PIC单片机的模/数转换模块及其使用
第八章 PIC单片机的USART通信模块及其使用
这一章写的太详细了!尤其是各种波特率的实际值,真方便! 并多次深情地说:"尽可能选择高速波特率发生方式以减少与标准值的误差"...太感人了...
我也提供一个自己编写的Delphi+MSComm控件串口收发程序http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=1421495
第九章 PIC单片机同步串行接口及其应用
第十章 PIC单片机的CCP模块及其应用
第十一章 PIC单片机的C语言编程 从汇编转入C,搞MCU的人可能最关心的有几点,其中就有位变量的定义.因为工控的主要目标就是IO的控制.至于算法等与PC编程没什么两样. 前天看了高奇PIC C论坛斑竹cypok的文章http://www.goldenchip.com.cn/gdbbs/dispbbs.asp?ID=2003126231104574&announceid=2003126231104574&prefile=searchlist.asp&boardid=5&searchkey=picc&area=0&dateandtime=all&username=cypok&dpi=1&page=1&skin=1后,觉得很有意思,就突发奇想:自己是否也玩玩PICC的位变量呢??? 地球人都知道!cypok说的太好了,正合我意! 我是个粗人,我不管书上说些什么,网上帖些什么,只要是自己也能瞎想出来的,哪怕与别人雷同也罢... 所以就想张工等用位域来定义一个位变量,何不用typedef来定义一个新变量类型,且它既能按位域寻址也可按字节寻址呢??? 于是就构造出来了http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1416214 觉得还有些麻烦,就改为http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1416941
先看下经典的位定义 static volatile unsigned char myvar @ 0x25; static volatile bit b7 @ (unsigned)&myvar*8+7; static volatile bit b6 @ (unsigned)&myvar*8+6; static volatile bit b5 @ (unsigned)&myvar*8+5; static volatile bit b4 @ (unsigned)&myvar*8+4; static volatile bit b3 @ (unsigned)&myvar*8+3; static volatile bit b2 @ (unsigned)&myvar*8+2; static volatile bit b1 @ (unsigned)&myvar*8+1; static volatile bit b0 @ (unsigned)&myvar*8+0; 再看下非典的位定义 方法1: PICCBITBYTE myvars @(unsigned)0x25;//申请新变量类型PICCBITBYTE名为myvars,并绝对定位在bank0的0x25处
#define myvars0 myvars.BIT.BIT0 //myvars.0 #define myvars1 myvars.BIT.BIT1 //myvars.1 #define myvars2 myvars.BIT.BIT2 //myvars.2 #define myvars3 myvars.BIT.BIT3 //myvars.3 #define myvars4 myvars.BIT.BIT4 //myvars.4 #define myvars5 myvars.BIT.BIT5 //myvars.5 #define myvars6 myvars.BIT.BIT6 //myvars.6 #define myvars7 myvars.BIT.BIT7 //myvars.7
方法2: PICCBIT myvar @((unsigned bank1) 0x80+0x25);//申请新变量类型PICCBIT名为myvar,并绝对定位在bank1的0x25处
#define myvar0 myvar.BIT0 //myvar.0 #define myvar1 myvar.BIT1 //myvar.1 #define myvar2 myvar.BIT2 //myvar.2 #define myvar3 myvar.BIT3 //myvar.3 #define myvar4 myvar.BIT4 //myvar.4 #define myvar5 myvar.BIT5 //myvar.5 #define myvar6 myvar.BIT6 //myvar.6 #define myvar7 myvar.BIT7 //myvar.7
可以看出,方法2比较简单(缺点只能位寻址) 但myvar.BIT.BITn或myva.BITn好像比&myvar*8+n更符合C++中的类成员符"."的"潮流" 这可能与我喜好BC++及delphi有关吧...
如果当初PICC也是用非典方法来定义位变量,网上就不会就人说我吃饱了没事干了...
我对基本的三种位变量类型成功的定义并非重复劳动,只是从侧面说明PICC的位变量定义绝非华山一条路,可能还有其他的思路. 不管别人如何认为,自己对2种位类型的新变量类型定义 typedef struct { unsigned BIT0: 1; unsigned BIT1: 1; unsigned BIT2: 1; unsigned BIT3: 1; unsigned BIT4: 1; unsigned BIT5: 1; unsigned BIT6: 1; unsigned BIT7: 1; }PICCBIT;//定义一个只能按位域寻址的新变量类型
typedef union { PICCBIT BIT;//可以按位域寻址 unsigned char BYTE;//可以按字节寻址 }PICCBITBYTE;//定义一个既能按位域寻址也可按字节寻址的新变量类型 还是自认为比较满意的...真是"郁闷惊醒梦中人"呀...
搞MCU的人可能最关心还有C编译器的启动及变量自动清零过程,因为那是MCU人的命根!如果这个也搞不清,那就没法真正使用C. 所以就向张工发出了自己认为可能是最有价值的鸡毛信http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?id=1373965 同时也得到了我上网以来最使我兴奋的回帖http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1374841 真是一划惊醒梦中人呀...http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1375042
虽然PICC的persistent很美丽,但对于低功耗及不怕任意复位的系统编程设计中,可能有些罗嗦(但很可靠), 可对于我来还是不能满足需要的,张工的"一划"太难忘了...爽!爽!爽!
先占个地方,有空就写点... 写的不对之处,望张工打板子...
|
|
文章评论(0条评论)
登录后参与讨论