单片机编程经验集锦

2024-10-25

单片机编程经验集锦(精选5篇)

1.单片机编程经验集锦 篇一

这个binutils软件包提供建立目标文件所需要的所有低级工具.它包括一个AVR汇编器(avr-as),连接器(avr-ld),库处理工具(avr-ranlib,avr-ar),生成可载入单片机EEPROM目标文件的程序(avr-objcopy),反汇编器(avr-objdump)和象avr-strip和avr-size这类的工具软件.

运行下列命令编译安装binutils:

bunzip2 -c binutils-2.11.2.tar.bz2 | tar xvf -

cd binutils-2.11.2

./configure --target=avr --prefix=/usr/local/atmel

make

make install

添加/usr/local/atml/lib这行到/etc/ld.so.conf文件里面,运行/sbin/ldconfig命令重建连接器缓存.

2.如何才能有效的学习单片机编程 篇二

要知道单片机是什么?单片机有何用?单片机系统设计的流程是怎样的、需要掌握哪些辅助软件(当然就包括相应的编程语言)?怎样设计算法、写出程序?怎样烧录程序?单片机是怎样工作的?怎样让它能支配机器按照人的需要进行动作?

了解这些之后,我们的学习就有了目标和方向。

至于这些问题的解答,主要应该还是在图书馆或网上的各种资料中寻找!

2、探索

单片机很难学,是因为其内部结构、编程语言抽象,且实际应用中与其他电子技术和元器件知识相互关联,需结合起来一起设计进行开发。

所以,第二阶段要了解单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?如何将一条条编程指令组合成一段段有效的程序?并不断尝试,变换各种不同的描述方法,烧录不同的程序观察比较运行结果,分析出现的现象及其原因。这将给你的学习带来很大帮助!并且,程序的成功烧录和运行,也能极大增强你的自信!

3、解密

之所以单片机能成为控制核心,设计出包罗万象的应用系统来,是因为开发者利用了单片机提供的种种功能及各种外设。

因此,第三阶段我们要掌握单片机的各种功能,再加上诸如传感器、模数转换、扫描显示、串行、中断的应用思维,结合更多的元器件、电子电路知识,逐个学习、体会实际的单片机系统的秘密。

4、远航

通过以上三个阶段,大家基本就可掌握单片机的应用了。但要设计出丰富的单片机系统,解决复杂的实际问题,还需要了解更多的外设知识及其与单片机的联系(如电动机、各类存储器、继电器、红外管等)。这些需要不断的学习和积累。有时候,接到一些开发任务,就需要你针对这个任务自觉地去搜集、学习相关知识,在实践中不断学习和提高。

5、总之

1)先通过各种文献资料了解基本结构,掌握必备的基础编程能力;

2)买开发板动手实践,遵从教学视频做相应的更深一步的了解;

3)试着设计算法,编写程序,烧录程序,运行,并分析结果;

4)对程序进行修改,同时观察运行结果的变化,进一步了解单片机的运行及控制原理,总结;

3.单片机编程经验集锦 篇三

1、将编译好的用户应用程序下载(编程)到LPC900系列单片机(MCU)内部Flash的方法有三种:

(1)在系统编程ISP(In-System Programming)。

(2)在电路编程ICP(In-Circuit Programming)。(3)通用或专用编程器编程。

编程器编程是一种传统的并行编程方法,特别适合于DIP封装(如果是表贴的需专用适配器)或量产阶段(批量)的MCU编程,其特点是速度快、可靠性高。其缺点是无法对已焊接的表贴MCU编程,而且成本较高,一台稍好一点的通用编程器至少在千元以上。目前大部分品牌通用编程器(如Xeltek 3000U等)和周立功LPC PRO专用编程器均支持LPC900编程,而且有些编程器借助专用下载线(如Xeltek ISP-Header01、周立功ICP900-ADP)还可完成ICP编程。

ICP和ISP均采用串行编程方法。其中ICP是一种通用标准(规范)编程,硬件连接采用PCL(P0.5)、PDA(P0.4)、RST、VDD和GND 五线制,但要求编程时PCL、PDA、RST和VDD与系统其它电路断开。ICP的加载(启动)是由MCU内部硬件电路完成的,并调用MCU内部IAP(在应用编程,In-Application Programming)实现Flash编程。上位机(PC机)通过专用ICP下载器(如周立功MiniPRO和涛行TX-MiniICP)与目标系统相连,编程软件使用FlashMagic或SmartPRO。

注意:仅老款的LPC932不支持ICP编程,其它LPC900系列的均支持。

关于ICP编程更多的内容可参阅周立功公司的“LPC900系列单片机ICP解决方案”和“LPC900 在电路编程(ICP)规范”。

2、与ICP不同,ISP是一种通用非标准串行在线编程,尽管不同IC厂家内部实现ISP编程技术(算法)不同,但外部硬件连接均采用串口(或USB转串口)的RXD、TXD。根据ISP的加载启动(Bootloader)方式不同(LPC900的ISP加载机制可参阅NXP的AN10221-“In-System Programming with the P89LPC932”图2),LPC900的ISP编程方法又可分为三种:(1)RST 3脉冲法。(2)帧间隔法。(3)直接跳入法。

“3脉冲法”有点类似ICP,硬件连接也是采用5线制:RXD、TXD、DTR、RTS和GND,其中DTR控制MCU的VDD,RTS控制RST,且要求ISP编程时MCU的VDD和RST应与系统其它I电路断开,具体电路可参阅周立功的“LPC900系列单片机ICP及ISP使用指南”图1.16。该方法的ISP加载是在MCU加电复位后有内部硬件完成的,因此适用于刚出厂的全新空片编程和已下载运行应用程序的升级编程。就是因编程时要断开VDD和RST板上连接比较麻烦。

“帧间隔法”硬件连接只需RXD、TXD和GND,简称“3线制”,“3线制”是目前大多数IC厂家ISP编程采用的连接方式,如STC51单片机等。简单方便,成本低(仅需20元左右的RS232转TTL电路或用户自己用1片MAX232即可)。其原理是MCU检测到RXD上帧间隔码(连续的低电平,即串口“Break”脉冲)就进入ISP模式。虽然这种检测是由MCU硬件完成的,但应用程序一开始必须对串口进行初始化,其C代码参见上述“使用指南”程序清单1.2。由此可见,原则上“帧间隔法”只适合于应用程序的升级编程。不过,对于刚出厂的全新空片,由于其“引导状态位”=1,加电复位后就自动进入ISP模式,因此上述三种方法都适用的。“直接跳入法”就是应用程序判断某个开关,如接通(为0),则进入ISP模式,否则状态不变运行用户程序。显然该方法也必须在应用程序中嵌入“开关判断”代码(参见上述“使用指南”程序清单1.4)。一般都用于应用程序的升级编程。ISP编程的上位机程序可使用FlashMagic或ZlgISP900,其中ZlgISP900上述三种方法都可以,但不支持ICP编程。而FlashMagic支持方法(1)和(2)以及ICP编程,对于“3脉冲法”,编程前必须将其“Advanced Option”中“Hardware Config”的“Use DTR and RTS to enter ISP”勾选上,而“帧间隔法”则不能勾选,此外,除非MCU是全新空片或者确定其引导状态位(Status Bit)为1,否则进行ISP编程之前必须通过ISP菜单中“Start Bootloader”的“Send Break Condition”发送“3脉冲”或“帧间隔”才能使MCU进入ISP模式,而且要求:“Interface”选“None(ISP)”;“Baud Rate”选“7200”(内部RC振晶)。

注意:由于FlashMagic每次发ISP命令前要发2个同步码(大写字符U,原理后面阐述),因此其成功率比ZlgISP900。

3、LPC900出厂全新原装空片,其引导状态位(Boot Status Bit)=1,加电复位后MCU自动进入ISP模式,不必再通过“3脉冲法”和“帧间隔法”进入ISP,在MCU接收上位机ISP命令前,上位机必须通过发同步字符“U”让MCU自动跟踪串口通信波特率,上位机收到MCU回送的“U”表示跟踪成功,然后就可进行各种ISP操作了,如读ID,读配置信息,擦除、编程、加密Flash等。

(1)由于全新空片MCU加电复位后已自动进入ISP模式,因此ZlgISP900上述三种方法均可进行ISP编程。FlashMagic也不需“Send Break Condition”。(2)FlashMagic每次发ISP命令前要发2个同步字符“U”,而ZlgISP900只在执行“进入ISP模式”命令时发同步字符“U”。

(3)同步字符“U”的十六进制代码是0x55,在MCU的RXD上(加上“起始位”)实际上就是一串方波,便于MCU自动跟踪测算波特率。由于MCU是自动跟踪上位机串口通信波特率的,因此FlashMagic 或 ZlgISP900的波特率选择不是很重要的,不过一般建议选择7200或9600。

4、下载用户应用程序到MCU时要注意,必须先将配置参数中引导状态位设置为0,否则即使成功下载应用程序,复位后也无法正常运行,因状态位=1,加电复位后MCU会自动进入ISP模式的。

ZlgISP900开始运行后或在读入加载文件(*.hex)后总是自动将引导状态位置为1(也许是个小Bug?),因此必须在读入文件后,先将“安全级别”改为“弱级”,再进入“查看配置信息”,去掉“引导向量=0x1”前的“√”去掉,并点击“设置配置信息至缓冲区”,然后才能将应用程序和配置信息下载到MCU。FlashMagic在下载应用程序时会自动将引导状态位置为0的。

如果使用ZlgISP900在下载应用程序时将状态位置为1了,唯一的办法就是将状态位设置为0后重新下载一次配置信息。

5、虽然ISP编程方法(“3脉冲法”除外)简单方便,而且成本很低,但许多LP900的用户发现其成功率很低,特别是对刚买来焊上的新片,成功率更低。归纳起来有如下三大类故障:

(1)第一次编程成功了,但用户程序没有正常运行。

(2)已下载用户程序并正常运行,但无法再进行ISP编程。

(3)使用ZlgISP900时,点击“进入ISP”后显示“成功进入ISP状态”,但无法进行ISP操作,如读ID显示出错;使用FlashMagic进行ISP操作时显示通信失败,并显示“Failed Autobaud”。这种情况对于刚焊上的空片出现最多。对于这三种情况,首先要解决的是所使用的MCU是不是买的全新原装产品,现在市面上有很多“翻新片”,性能很差,工作不稳定。其次是尽量使用物理串口,因为USB转串口工作不稳定,其驱动程序也容易出问题。

第一类故障一般都是下载应用程序时没有将状态位置为0。解决办法很简单,只要重新将状态位置为0写入MCU即可。

第二类故障稍复杂些,如果是使用“帧间隔法”,最有可能的原因是没有将“帧间隔法”初始化代码嵌入到应用程序中,另一种可能性是编程时不小心把MCU的ISP程序所占扇区(LPC933是扇区3,其它是扇区7)给擦除掉了,如果出现这种情况,唯一的办法就是将ISP程序源码(可从网上下载到)嵌入到用户程序工程中重新编译,并使用ICP或编程器下载到MCU中。

第三类故障出现最多,情况也最复杂,这也是国内很多用户不愿意使用LPC900的原因之一,特别是以前使用过其它MCU的(如STC的51系列单片机),ISP下载很方便,很可靠。尽管NXP和FlashMagic官方网站或论坛上指出出现这种故障的原因大部分是用户使用不当引起的(参见“http://forum.flashmagictool.com/index.php?topic=3628.0”),但据笔者多年开发经验来看,还是NXP LPC900的ISP程序(或者是FlashMagic、ZlgISP900?)在设计上不够完善引起的,特别是ISP程序中的“自动跟踪波特率”(Autobaud)在设计上可能有点小Bug,经常失败!(Failed Autobaud),导致串口无法正常通信。

4.钓鱼经验集锦 篇四

常到各大钓鱼网站浏览,满眼都是“切线”的事,几乎无钓不切,你切我切大家切,断线跑鱼快成出镜率最高的词汇了。看看这位网友一把鼻涕一把泪的倾诉吧——

郁闷的日子啊:先是暴雨挨顿浇。雨停鱼开咬,黑漂,一提,只听线“嗡”地一声响,竿根本无法抬起,紧接着“嘣”地一声,鱼去竿轻。赶紧再上副子线,刚抛入水,又一个黑漂,提竿——“嗡”一声、“嘣”……刚才一幕的重演呐。反了它了还!直接换大力马子线,挂饵抛竿,一个黑漂……这鱼疯了啊,我提、我提、我提提提……不会吧,又断啦?仔细一看,哇靠!子线没切,改切主线了,1.0的,连铅皮座都不知所踪啊。换1.5的!我还不信了!旁边哥们看得眼热,趁我换线工夫将钩抛进了我的窝子,我一边调漂一边看他切线,一副、两副、三副,呵呵,三声线响,三副子线拜拜,我1.0大线都切了,他点6的还敢比划。憋着一股劲,我重新杀上战位,1.5大线,1.0子线,钩也整成大的了。黑漂,提竿,线响……竿空!细看,主线还好,子线也在呀,钩咋回事?断了?我倒!精神已快崩溃了。我挑啊挑,精心挑出一副感觉结实的线组和钩。鱼疯咬,更疯跑,连续9条啊。还黑漂?!我提!我豁出去啦!……漂哪去了?妈呀,这回干脆连漂都带走了,那可是2.0的大线啊!我节衣缩食一支花90买的漂啊!我已经彻底抓狂了,心在抖、手在颤,大脑一片混乱,拿着被切的2.0主线,我……我……我什么啊我,这已经是俺最大的线组啦,呜呜呜……两个已切光了所有的子线的兄弟灰头土

脸地望着我:“帅哥,收竿吧?”我跟个落汤鸡似地耷拉了脑袋:“没帅哥了,今儿光剩下„衰哥‟啦。”回家路上,心渐平静的我们粗略总结了下:我切线跑了10条鱼,曲哥切线3副、跑了大概有3、4条;莱哥跑鱼5条;猪头1条(高手,不服不行啊),总计20余条。按平均每条4斤计,大约七八十斤,算完这个数,哥几个跳车的心都有了哇!……

这几个伙计还不算糗,再看看下面这主儿——

终于杀奔碧流河水库了,谁曾想极度郁闷的过程拉开了序幕,打窝一小时后,就开始连口,我用的是6米3竿,1.5主线配0.8子线,一共钓获草鱼5条,最大的7斤,最小3斤,鲤鱼两条,3斤左右。什么?收获不小了?你得看看俺的损失啊,从开钓到收竿,共切走主线两根(韩国夜光漂和钓鱼郎各带走一只,心疼流血啊),0.8子线损失20多副,唉,晦气之旅,点子背啊……

1.5主、0.8子 —— 这主儿拿“大鱼天堂”碧流河水库当鲫鱼坑钓了,那胆魄真得佩服,必须地!0.8子线连切20副,咱拴上第21副接着干!撞了南墙都不回头,这是什么精神?“一条道跑到黑”的精神!唉,叫人说点啥呢?

看看上面些衰哥糗人,你切、我切、大家切,今儿切、明儿切、后儿还切!你说你……我就不明白了,这帮哥们儿钓水库,一定要用什么1.5主、0.8子吗?回来说什么“点子背”,还行不行啊!亦有相当一部分人说:1.5配0.8,是当今配比最好、最流行的线组了。要我说,在小坑小池里钓鲫鱼倒是“它好,我也好”,可你这是野坑水库哇!它倒好了,我能好么?!拜托大家,就不能用上粗点的线啊!非要把野钓也玩成竞技吗?像这路玩法,玩你不是目的,目的是玩死你!……唉,愁死了,全是竞技钓文章看多了,对大师们“景仰如滔滔江水”,结果千千万万钓友在“滔滔江水”里迷失,都是“从众意识”惹的祸啊!

我也喜欢玩竟技钓,但脑袋绝不会大到拿碧流河水库当鲫鱼池来钓的地步!“竟技钓”本身没有错,它对提升大陆钓鱼群体的整体钓技水平,居功至伟!问题出在哪儿?出在我们由“竟技钓”而形成了“思维定势”!把“竟技钓”(具体说,是“竟技钓鲫”)的用线法则,“放大”到钓鲤、钓草、甚至无限延展到野钓、水库钓去了——这是否就是那些糗事连连的“衰哥”们的症结所在?

有位切线切到喊“救命”的哥们儿,发帖请教各位大虾“有什么办法能改进拴线方法、让子线和主线上面没有死结啊?”有人告诉了,说:看徐银舟打主线上的结,非常注意,一定要后一个结压在前面的结上,多绕一道会有改善。又有人告诉说,将钓线并一根棉线一起打结,会好很多,听说可以提高强度25%!还有人说:见过一个广告,是一种线结保护装置,相当于在竿梢和线结处加了一个衬垫。当然更多的人还是说:主线完全不打结?根本不可能!你切主线,是因为主线与子线号数间隔太小,2.0主,最好别用1.5的子,用1.2以下的,否则很容易断主线,断的位置一般在8字环处和猪蹄扣打结处,这很正常,不是拴线方法问题。

钓线拉力值=结节强度,那么不打结,不就自然等于是将同一根钓

线的强度提高了吗。不打结?刚不还说根本不可能吗!可是我说:凭啥不可能?咋就不可能?不单“可能”,而且完全可以做到!这些年来,我的钓线上就从不打结,子线不打结,主线不打结,一根钓线从头至尾一个疙瘩都不系!“那你的主线是怎么拴到竿梢上的,连猪蹄扣都不打吗?”对了,我还就是不绑猪蹄扣!具体方法是:将竿梢蛇口绳(亦即缨子)窝过来,用细钓线缠在竿梢上,前面留出一个套,缠钓线处用502胶加固(建议新竿买回来后,一定把缨子如此加固一下,因为大鱼拔走缨子的事,实在屡见不鲜)。主线拴上一个小挂钩,不是带转环的那种挂钩,而是单纯就一个挂钩,少量鱼具店有售,如买不到,可买带转环的那种,把转环摘下、只用挂钩就是。将挂钩挂到竿梢蛇口绳的套上,大线就连到钓竿上了。往钓线上拴挂钩的方法与拴8字环的方法相同,使用抽紧式拴结法。这样一来,我拴挂钩是抽紧式,拴8字环是抽紧式,子线往8字环上拴还是抽紧式,整根钓线从头到尾就不打一个疙瘩了。听明白了吧?这就是我切线概率大大降低的一大诀窍噢。

当然,我很少切线也并非只倚重于这一单门绝活,防切线是个“系统工程”,细节决定成败,这里一点、那里一点,多个细节累加起来,防切概率才能上去。那位说了,别卖关子啦,到底还有啥诀窍,赶紧抖落啊!哈哈,这就说了,首先我们回头看看那位切线切到抓狂的钓友,他的主线是怎么切的:“黑漂,一提,只听线嗡地一声响,竿子根本无法抬起,随后就……”也就是说——拔河啦。经验证明,尽量保证不拔河,是不切主线的重要一环。怎么才能不拔河?本人再次公布一道绝招密笈:如钓场可能遭遇大物,那么抛竿时尽量不要抛满线,抛个八成左右

就可以了,钓线松驰有预留,这样提竿时,在中鱼的一刻竿子已经向上抬起了一定角度,有利于控鱼、不让它回头,只要绷竿保持住这个仰角,寻机再加大角度,“拔河”之臾一般便可成功化解。这不是我的“专利”,有位钓友对此作过很专业的实战研究——

……等了半天中了一尾大家伙,遛了很长时间,最后鱼在水里发力,眼睁睁看着竿头往水里一扎,拔河,切线。从那以后,我不断的翻看高手们的VCD,不断的看他们中鱼控竿角度,自己总结了一些经验:1.中鱼后,当竿与水面成夹角90度时(简单说就是竿子直指向天),此时竿子从手柄直到竿梢都受力。2.当竿与水面成夹角70度时,竿的承力处是从倒数第二节开始往上走。以此类推:45度~30度~20度~10度~0度……夹角越小,由竿所承的力也相应减小。当钓竿承力减小时,就只剩下钓线来承力了。此时1.5、2.0 的钓线很难顶住水下鱼的冲击力,切线往往就随之发生了。实验中,我用90度拿上来一条鱼,手上的感觉很轻松,鱼在水底发力,我一直让竿子与我的人垂直,不用一两个回合,鱼就马上出水入抄;70度时,手上感觉水下的力满大;45度时,从竿子转来的感觉就是很硬的那种了,就像竿子没了腰力似的。所以后来我抛竿,从不把线抛满,只要中鱼,抬竿便不会小于45度,然后尽量将竿子抬到70度以上,这样我就能满弓,让竿的弹力化解鱼的冲劲,减少钓线承力,切线概率大大减少……

此外新近少量开始流传“倒竿”(也有叫“插水” 的)防拔河方法,我朋友阿东是这样讲解的:在实在无法控鱼、即将出现拔河时,果断地向左或向右将竿前端带着弧度压入水中,究竟是向左还是向右,取决于

倒竿瞬间对鱼窜逃方向的判断,一定顺向倒竿,若“倒行逆施”,干脆不如直接拔河算了。“倒竿插水”之所以能以极高概率消解拔河之危,是何原理?本人忖度,一个是水的阻尼作用,再就是向上提竿生拉硬拽,使鱼出于对强制离水的恐惧而殊死一拚,而倒竿插水后,恐惧感猝减,鱼自然相应会立马消停下来。不拔河,切线可能自就大大减小。

接着再说竟技钓“用线法则”的思维定势。竟技钓用线法则是什么?是:用线尽量往细里用。因为竟技钓池,对象鱼是固定的,或鲫鱼、或混养。鲫鱼再大能大到哪去?混养池的鲤草一般通常也都不过三五斤。且竟技池(尤其是竟技鲫鱼池,更尤其是反复钓放的“回锅鱼”、糗鱼、滑鱼池),你必须用细线,主线细了,浮标反应灵敏;子线细了,鱼吸饵时入口顺畅、不档嘴、无异感。钓手们在总结参赛体会时反来复去地对此就是个强调!众多大师铺天盖地的“授技”文章,更是耳提面命、“哼哼”教诲。无形中这就形成了一种思维定势,一种集体无意识——用线要细,细了还再细!我细、我细、我细细细……然后带着满耳“细”声、一脑袋“细”思维,走上了野坑和水库……随后嘛,我切、我断、我嗷嗷跑鱼……不切线,还剩下你了?

诚然,有人会说,不是有人用1.5号甚至1号主线、0.6甚至0.5的子线,钓起过十几斤的巨物吗?我也看过这样的文章,承认这类事情的确可能有,但这类蛮抓眼球的钓鱼经历毕竟只是“个例”,除去钓手可能钓技高超,其它肯定别有其因,你不用只看他钓起的鱼多大,就好比是人,同样是一百六十斤体重,猛小伙壮汉子,和孕妇、老弱病残一样吗?

鱼也如此,而且别说孕鱼老鱼,同样是成年壮鱼,狂猛节令和冰点水温下半冬眠的僵硬鱼身,还有天壤之别呢。总拿“个别”当“一般”,自然是衰哥糗人们着了“道”的又一根源了。

不是自我标榜,碰上苦叹“切线经”的哥们儿,我扔过去的就一句话:甭跟我说倒霉,你活该!我咋不切线呢?(有点大言不惭了哈),要说一回没切过,那是吹了,但别人切三十回二十回我至多碰着一回半回,却是不争之实。那位问了:你咋地?我告诉你吧(又要吹牛不上税了哈),我也玩竟技,但从不让“思维定势”框住我自己。钓幼鲫练竿池用什么线组,钓大鲫池用什么线组,池钓鲤鱼、草鱼用什么线组,野坑水库用什么线组……鱼情一定把握准喽,据此决定用线之道。就说野钓和水库,那是充满未知的地方,指不定碰上多大的货,而且野鱼和池鱼力道一样吗?一斤的野鱼比三斤的池鱼劲道还猛。况且野鱼吃食全跟饿狼似的,才不管你线粗线细、线软线硬哪!看过上面那位朋友“切线”切到抓狂的经历,许多人还不相信:太夸张了吧?2号大线切了,鱼吃了大补药啊、还是线是豆渣掺屁做的?(可见“思维定势”误人之深呐)。

我跟他们说:哥们啊,夏天野钓大鱼,线还是要粗点,要是我,早就6号主线、一号大力马子线干上啦,或者干脆用矶竿野战,轮装3.5主线,1号大力马子线,大小通吃,几十斤重的鱼都没问题,龙王都会跟你结仇哇。而那位连切20副0.8子线、仍然拴上第21副接着干的朋友,后来说了实情,原来是听说碧流河出大鲫鱼了,所以带去的是6米3顶级并继竿,谁知鲫鱼摇身一变成草鱼了,并继竿用线是受限的,子线、主线超过1.5和0.8,线倒是不切了,肯定是改拔竿子了,那主儿投鼠忌器,当属用竿不当造成只能听任钓线狂切。因此我建议:今后玩大水库之类钓场,别跟我说你想带高档竿,还是中档竿子玩得仗义!线和钩号都要换大,野鱼吃口狠,全赛饿狼一般,线粗点、钩大点,丝毫无碍。我去水库,先用1号以下子线试钓一会儿,看看挂不挂钩,不挂的话,换上大号线侍候!正像我一个小兄弟说的:不惯它毛病!去水库就是为大鱼,少钓几条小的无所谓,小的在哪不能钓啊。

当然,我虽与这位小兄弟的“用线取向”趋同,可话说回来,用号数大一点的线,就一定会“牺牲小鱼”吗?钓线粗了,对钓小鱼有没有影响?要说没影响,那是闭眼说瞎话。粗线肯定没有细线灵敏,很多钓技类文章中都有下列表述:“子线粗了硬了,鱼吸饵时弯不过来,档嘴,不易吸入,纵是吸进去,鱼也易产生异感、导致吐钩。如果鱼是翘着尾巴斜着身子就饵,要把底饵吸起来,硬线就更困难了。所以子线要细要软,阻碍小,一吸就进嘴。”

这个道理自是无可置疑。只是我总觉得,许多人过分夸大了子线线径对鱼吸钩就饵的影响,也过分夸大了主线线径对浮漂动作灵敏度的影响(不是说没影响,我说的是“过分夸大”)。我在碧流河水库,4号子线照样上鲫鱼,甚至白条子都刷刷上。竟技钓赛,钓新放入池的生口鱼,钓手为求速度,不也曾用“倒拉牛”线组狂飞大鲫吗?“倒拉牛”用法始自2002年的“光威钓王杯”,在钓大鲫赛中,由于用的多是超硬竿,且鱼大、上鱼快,子线疲劳,加上反复在挡针上卸鱼磨擦,所以造成子线狂断。无奈之际,有人把0.6子线换成0.8、1.0、1.5……结果还是断,于是

再加粗,直至子线超过主线才避免了断线。如果不是因为飞大鲫,谁会用这“倒拉牛”?30秒一尾、连续飞,不光是子线加粗了,胳膊也粗了一圈,第二天膀子都抬不起来了。当然,“倒拉牛”钓法并不具普遍意义,因为子线倒是不断了,要切就是切主线、连漂带走了,小池子可以把漂捞回来,大水库呢?岂不一去无回啦。

有人撰文说:“有钓友在屡屡切线跑鱼后,将子线加粗,这下大鱼倒是跑不了啦,但鲫鱼咬钩少了”——对此,事实很难给予佐证,一场一场的“倒拉牛”大战明摆在那里,尽管这种“非常规”配组是急就章,是被飞快鱼逼出来的无奈之举,但由此不也从另一方面印证了一个事实么:2.0甚至2.5子线,影响鱼吸钩就饵了吗?事实胜于雄辩,诸如“鲫鱼咬钩少了”之类的“想当然”不攻自破。可见钓大鲫(甚至野生大鲫)动不动就用0.4、0.3甚至0.2子线,用到0.8以上就受人侧目、让人讥为不够专业等等,全是由竟技钓“思维定势”的误区导出来的,众多钓友人云亦云、盲目跟风跑,过分夸大子线线径对鱼吸钩就饵的影响,不但是杞人忧天,而且误人不浅,直接导致大江南北日以万计的“切线跑鱼”糗事前扑后断地发生着。而野塘和水库就更不须说了,水库除了寒水期鱼口稍轻稍弱,它是没有“糗鱼”、“回锅鱼”的,那里更多的是一群“饿狼”。

话又说回来,使大力马子线,一定就会“倒拉牛”么?近几年我就基本使用特种线(大力马、火线或蜘蛛线)做子线。但我在大线与子线的配组中,绝对考虑保持二者的拉力值差,通常主线要能承受双子线都上鱼(或双子线在水底同时挂钩)时的拉力。主线当然也全用特种线,用

到0.6、0.8、至多 1号,子线用0.4、0.6特种线,基本什么鱼都能对付。

这里我就要结合自己的用线实践,说说许多钓友对使用特种钓线的顾虑了。据美国钓具界专业人士和材料物理专家考证,特种钓线的PSI(每平方英寸所承受的磅力)比钢强逾12倍,迄今无任何素材能与之匹敌。所谓特种钓线,主要是三种,其一:大力马,由多股线编织而成,具有很高的强度,基本没有延展性,柔软。其二:蜘蛛线,也叫编织线,也是多股,但它是由多股高分子单丝线编织而成,与大力马用材不同,较大力马线稍硬些。其三是火线,其实就是编织线经热熔复合,将多股加工成了单股,我仔细对比过所标数值,可能由于经过热熔处理,在同等线径情况下,火线拉力值逊于蜘蛛线,但因其可加工到超纤细,能明显降低鱼的警觉性,不影响浮漂校正,比重大于水,下沉速度快、切水性佳,零延展性(无伸缩),鱼讯传递敏锐,低记忆(即使缠结,只需轻扯就可以恢复原状),虽说强度略逊于蜘蛛线,但拉力值仍较高,较同等线经的尼龙单丝线强四倍以上(也就是说0.4线径的火线,拉力强度可抵2号尼龙单丝线)。

不少钓友说:“特种线结实是结实,但弹性差。而且大力马做主线 杀水慢、不切水,风线浮在水面,有风容易把线刮弯曲。用它做子线呢,因为软,爱缠线 一旦打结还特不好解。” 所以,几乎一致的看法是:“特种钓线只适合船钓和路亚,不适合淡水钓。”至少也是说:“除水库外,尽量不要用它。”

我觉得,这里就存在一个有没有真正把特种钓线用到好处的问题

了。我在市场买到的最细大力马是0.4,细且超软,鱼吸饵时绝无“档口”之臾,强度大,可抵2号尼龙单丝线,一般五六斤的鱼切不了它。剩下一个易打结的问题,这就看你提竿技术了,成手提竿,既有力道又柔和,不像生手,抡一下甩一下的、一弄就打结。纵是万一打了结,剪掉、换一副,不就完了?总比十副八副的切线(还跑了鱼)要好很多吧。用大力马做主线呢,固然存在一个切水性差的问题,但现在市场上有种黑色大力马(据说是“涂铅”线),还有种大力马线是包了炭蕊的,切水性好多了,基本与尼龙单丝线不相上下。而蜘蛛线和火线的切水性甚至还要好于尼龙线。最后剩下的就是“弹性”指标了,也就是所说的“延展性”。有人这样讲:“因为怕切线跑鱼而用特种线,但它对防断线跑鱼并没有带来太多好处,特种线被鱼拉断,那鱼应该很大了吧?可实际并不大,原因是线没弹性,提竿中鱼时,钓线没弹性就爱断。换上拉力值稍逊的隐含弹性的尼龙线,可能还不断呢。”

说此话者好象有点“管状视野”,视线中只有“线”而无其他了。难道中鱼时你提的只是“线”么?不对吧,提的应该是“竿”吧。既然是提竿,而且是“鱼竿”而非电线杆子,那么竿梢的弹性难道一点作用没有?这位作者在同一篇文章中自己也曾说:“提竿瞬间,竿梢的缓冲作用至少可以减缓钓线1/5到1/4的受重。”话从我嘴里说出来可能就更绝对了:尼龙钓线的那点“延展性”根本就完全可以忽略不计,切不切线,跟它挨不上!特种钓线只要是杀水(火线、蜘蛛线、涂铅大力马),它的优越性综合来看绝对远远大于尼龙单丝线。而大力马软线做子线不是容易纠结么?我现在很多时候连子线也改用火线、蜘蛛线了,它们的特点是“无

记忆”,就是比尼龙线还不容易出现无法消除的弯曲,出了弯,用手一捋就直了,也不易打结。线虽不是太软,但线径可以比尼龙线用得细几倍,这样它绝不比同等拉力值、线径粗几倍的尼龙线会更硬吧?事实证明,我使用特种线做子线,效果钢钢地。

会有钓友又提出顾虑了,特种线都不是透明的,容易被鱼发现啊,鱼看到线,就会警惕地不吃钩了。这里我又要说“过分夸大”这个词了,鱼的智商有那么高吗?它的小脑容积得有多大啊,要是连“那是钓线”都能判断出来,古代人的麻绳子还都不用钓鱼啦。水里有那么多的草棍树棍,鱼们还不得成年都警惕得饿着了呐……得,咱也别弄得跟抬杠似的,还是以我的实验结果来说话吧,我曾将尼龙子线和大力马子线作过专门比较,看看不透明的子线对鱼吃饵的影响到底有多“严重”。事实证明,同一鱼塘、相同钓饵、同一时间段、同一钓位,两种子线上鱼率基本可说完全无异。而且有一次在一鱼塘垂钓,我用透明尼龙子线,而旁边一老兄的子线,用的就不只是不透明了,甚至连大力马都不是,我看了下,干脆就是缝运动鞋那种多股尼龙线了,很粗,却蛮软,可他跟我的上鱼率基本不差啥……还用再举例子吗?不用了吧。好吧,说到这份上,如果你还不放心,近期专门出产了一种用作子线的“水晶火线”,基本透明。商家嘛,他很现实,既然消费者有顾虑,尽管这顾虑多余,他也不能不从市场考虑。这种线比普通火线要贵。

有个钓友说:“我们这里钓大鲤鱼和大框镜都用大力马,10元一盘,20米。就是用6号的大力马还有断的呢”……6号大力马断?!不会吧!

10元一盘的大力马,假线铁定无疑啦。商家内部透露,市面上90%大力马都是仿造的,而分装的基本是垃圾。这话说的可能有点绝对,但市售特种钓线,鱼龙混杂、参差不齐,倒是不争之实。国内和台湾出品的特种钓线,实际上大多是分装的美国和日本线。特种钓线我用过数十盘,美国原产的最好,日本的也不错,欲购特种钓线,建议选择信誉好的品牌店和销售商购买,千万不要被市场上各种各样“标称”产品所迷惑。贝克力最近新上市一种全新产品“火绒”线,相同线径的拉力值比火线要大十几倍,只是价格比较贵的说,但用上它,就更可放心大胆地“我细、我细、我细细细”啦!从此减免切线之臾。

最后还会有人说,钓线太结实了,竿子受不了啊。众多钓友对钓竿承受力的担心可以理解,但你若用劣质垃圾竿,那么用1号钓线、上条1斤重的鱼,就可能把竿搞断。而正规厂家出产的钓竿,如今质量都已相当不错。再说若上了太大的鱼,就算竿子能承受得住,你的臂力也难举呀,咱不硬举还不行吗,不是还有失手绳吗,本人曾多次亲历失手绳之妙用:闷竿,鱼劲极猛,正欲形成拔河之势,说时迟那时快,啪地松手撒竿,然后不慌不忙再把竿牵回手中,恢复弓竿遛鱼,那鱼就乖乖进了抄网。巨物为何这么快就被制服了?只因那大鱼正一身蛮劲用武时,怎料被一扔竿,犹如拔河绳突断,水中鱼体猝然失衡,当时它就蒙了,第一反应就是把身子横过来,以增加水阻,避免撞伤,在它身子重新找回平衡之前,是无论如何也发不出力的,等惊魂未定的它重新找回平衡,速度已接近于零,即或发力也大打折扣……我的几次扔竿,甚至都从未有过鱼带竿而走、须捋着失手绳拉回鱼竿的情形出现,把竿扔在脚前,竿就原地在那儿呆着啦,一弯腰拣起来,把竿立起、领鱼入抄就是,可见鱼在那一瞬间确确实实是完全彻底地蒙啦,失手绳的功效,无法不让人惊异惊喜!

那位又说了,我没失手绳啊。嗨,你咋恁磨人呢?没有失手绳,碰上巨物你主动让它拔河总会吧?放弃搏鱼、把竿放平,一拔河,只会切线、不会断竿——不就是保竿吗?当然,除了怕碰上大鱼损竿,还有一个就是不能不考虑到水底挂钩。一旦挂钩,在实在抖落不下来的情况下,为保证能把钓线拉断(最好是子线,实在无奈拉断主线也认了)而确保不损竿,确实要求钓线的拉力不能大于钓竿的承受力,因此防切线使用结实钓线时,把握好限度,也确实应在考量之中。

水库冬钓宜深宜远

立冬”过后,天气逐渐转凉,冷空气频繁,鲫鱼都成群躲在深水区的障碍物下过冬,这就为冬钓鲫鱼创造了良好的先决条件,平日很难钓获的大鲫鱼,而在冬天,往往一次出钓,就能

钓上多条。

在水库冬天野钓鲫鱼,尤其是大中型水库,只有钓远钓深才有所获。水深水温就高,更适合鲫鱼的栖息、觅食和越冬。要选用7.2米以上的硬调碳素竿,越长越好,竿长、线长才能钓得远、钓得深。用小钩、细线、轻坠和小号浮漂,搭配成悬坠钓法,因水深要调灵钓灵,对索饵迟缓,身体僵硬的冬鲫,有较强的浮漂信息。

在水库冬钓,钓点要选在深水处,到底多深才好,笔者的经验是水深在5米以上10米以下为最佳水深。水底地形复杂处、乱石枯枝处、水闸两边、有水草的地方、网箱边等等都是钓鲫鱼的好钓点。大型水库以前有不少水泥船,现在多数沉在水底弃之不用,上面附着了大量的微生物、水生昆虫和小虾,此处就成了鲫鱼越冬和觅食的“天堂”。如能找到沉船,其钓获量是非常可观的。

诱饵用液体诱鱼香精泡熟大米粒、鱼饲料域炒香的碎豆饼。钓饵用腐烂变质的红富士苹果喂养的大平2号红蚯蚓(此法养殖的蚯蚓颜色鲜红,带有苹果的香甜味)挂钩,穿到钩的

2/3处为止,钩尖外的蚯蚓不宜留的过长,最多2毫米,长了就会出现漂动提竿而无鱼的现象,蚯蚓宜细不宜粗(蚯蚓淡淡的水果香甜味及腥味,以及诱饵的果香和大米粒及似蛆虫的诱惑力,是冬季诱钓鲫鱼的最佳配方)。因水深,提竿要早,浮漂上升或下降半目就可提竿,有时浮漂只是微微一动,只要抓住时机,也能钓上鱼来。垂钓时手不离竿,眼不离漂,抓住浮漂的微小动作迅速抖腕提竿。鱼上钩后要一次提鱼离窝,鱼大提不动时,要迅速向一边倒竿,拉鱼离窝,以免惊跑窝中的其它鲫鱼。鲫鱼上钩时提竿不要过猛,用手腕的力量抖竿即

可,用力过猛往往会钩豁鱼嘴而跑鱼。

在水库冬钓,尤其是大中型水库,多数钓友都是吃过早饭再去钓鱼,其不知,气温虽低而水底水温却高,我们冻的伸不出手,而鲫鱼却在水低积极的觅食,如果吃过早饭出钓,那就错过了上鱼的大好时机,一天的钓获量在8点前就占了一半,早晨上钩的鲫鱼要比其它时

间钓上的鱼大。

根据多年的冬钓经验,冬季钓鲫鱼(封冻前)昼夜温差越小越好,这样的天气水温几乎无变化,占“天时、地利、鱼和(冬天的鲫鱼聚群)”的鲫鱼怎不争相觅食呢?咬钩的多是200克以上的大鲫鱼,全天候上鱼。在冬季,有时会有寒潮长期不回升,鲫鱼虽然抗寒能力强,但在长期低温的逼迫下,被冻的身不自如,成群的躲在深水区的障碍物。到寒潮后期,鲫鱼的自身体温调节已经完成,适应了当前水温,此时是又饥又饿,最肯吃食,只要找到鲫

鱼窝,就不难获得丰收。

渔谚说的好,“寒霜降,鲫鱼行”,下浓霜的时候都是天气晴朗气压高的好天,气压高水中溶氧量就高,也是个钓鲫鱼的好时机,以早晨8点前下午3点后上鱼量最高。早晨起来感觉特别暖和或水池里的簿冰逐渐融化,最好不要出钓,就是出钓,也收获无几,甚至“光

头”。

冬钓鲫鱼,只要把握好天气、水温(气温不等于水温)、鱼情、好的钓点和鲫鱼索饵的规律,掌握好浮漂信息,适时提竿,就能获得丰收。

冬钓方法要对头

只要我们冬钓有术,施钓有方,其鱼获率往往不比春秋季节逊色。

一、冬钓天时。所谓天时,即是选好天气和时段才出钓之意。冬有初冬(农历十月),仲冬(十一月),晚冬(十二月)之分。由于季节不同温差变化也大,因而冬鱼们的栖息觅食性也必然各异。1.应根据不同季节选好天气和一天中的好时段适时出钓,才是冬钓获丰收的关键所在。如初冬十月(小阳春)天气,还是晚秋温暖天气的延续。这时选择阴天即可全天垂钓而且鱼获率高。若是大好晴天时,最好在早上7时左右撒饵诱鱼,8~11时钓鱼为佳。因为

这时水中经过一夜寒风侵袭变得上冷下暖,冬鱼们知道要在水深适度相对温暖的水底里开始一天的觅食活动。时至下午2~4时,这时阳光减弱,上下水温相差无几。这时午休后的鱼们,又会游到温暖的浅水区里晒阳觅食。此乃是初冬晴天垂钓,一天中的最佳时段选择。2.冬钓下雪前。“雪前暖,雪后寒”,说的是在寒冬之际,如遇暴风雪或寒潮来临前两天,必然是风和日丽,气温骤增的温暖好天气。但故此,钓者们决不要错失雪前暖的好钓机3.冬钓南风。俗话说:“冬天刮南风,天气暖烘烘。”这时出钓,不仅使钓鱼人不受严寒之苦,而且还有种春暖之感让人舒心。越冬之鱼对此也很敏感,于是它们便游到岸边温暖的浅水区里暖身觅食。这时钓者最好迎着南风把鱼钓,钓绩绝对比在无风区好。

二、钓位钓点。冬钓一天能否获丰收,最主要的是取决于钓点选得好坏。冬钓如何选好钓位?其实前辈早有提示。诸如“春钓近,冬钓远”;“春钓滩,冬钓潭”等,已给我们指得一清二楚。1.选择离岸稍远的深水区。2.“钓鱼不钓草,多半要白跑”,3.冬钓向阳岸。冬钓时选择在太阳光长时间直晒水域中施钓为宜。因为这里水温相对比阴暗水域环境高,鱼儿们便喜欢聚此晒阳觅食,当然也就好钓。

三、钓具组合。1.竿长。竿用5米左右长的碳素软调手竿,方才适应冬钓远冬钓潭之需。2.线细。线用0.8~1号强力细线为佳。细线没入水中隐蔽性好,可使鱼大胆咬钩。3.钩小。钩用4—6号小钩,小钩装细饵以适应冬鱼吃食嘴张得小的特点,使鱼一吸入口,被钓入护。4.坠轻。用细保险丝敲成薄片,剪成宽1厘米,长2厘米左右的等腰三角形坠片,从宽到窄系在线上甚佳。5.漂灵。调漂时,用剪刀剪去多余坠片的方法,将沉力与浮力(浮

漂)调到基本平衡为准。

四、饵料运用。1.诱饵。由于冬天气温低水中寒阻力大,因此要求诱饵质量要比其他季节加倍浓香方有成效。我的方法是:用玉米500克,黄豆250克,油菜籽100克,猪饲料1000克,分别用小火炒香(不要炒煳)。然后将玉米和黄豆打成粉粒状,油菜籽打成细粉与炒香的猪饲料混合装入小塑料桶里存放备用。这一诱饵,据我多年冬钓运用实践,用料简单、易得、经济,天然纯香,受鱼青睐,诱鱼快捷,钓效极佳。钓前头天,用密封小瓶装入大器和玉米粒各半,然后倒入少许曲酒,盖紧瓶盖摇拌均匀即可。2.钓饵。鲫鱼属于典型的杂食性鱼类,它们一年四季荤素皆吃,根据鱼的食性特点,采取以荤为主素为辅,并以荤素多

备,交替运用为佳。

五、看漂与提竿。看漂是提竿获鱼的前提,只有看漂有方,提竿有术才是钓获丰收之本。故此钓者应集中精力仔细观察,如发现半露水面的漂稍有动感时,此时必须及时提竿。提竿时机宜早不宜迟,此乃是有效获鱼一大绝招。否则稍慢半拍,待鱼感到口中有异(钩)时,就会瞬间吐钩逃之夭夭。

每年的大雪(节气)过后,到封冻前,是我们在云蒙湖钓大鲫鱼的最佳时间,钓上的多是150

克以上的大鲫鱼。为什么能在如此寒冷的时间钓上大鲫鱼呢?只要你掌握以下几点就不难做到。

一、时间。从大雪到封冻前这一段时间是冬钓大鲫鱼的最佳时间。

二、天气。最高温度不超过8℃,最低温度不低于0℃,昼夜温差越小越好,最好是阴天。这样的天气温度变化不大,几乎全天上鱼。如果气温在1~5℃之间,钓上的鲫鱼有不少超过0.5千克,有时还能钓上千克重的特大鲫鱼。外出钓鱼时要本着无风比有风好,小风比大风强的原则出钓。

三、钓点。只要水深在5米以上,水底有大量的乱石块或枯树枝,有沉船地方也可以。如果是陡岸或斜坡,也能上鱼,只是上大鲫鱼的机会少点。

四、饵料。以炒香的碎豆饼(鸡饲料或鱼饲料不用炒)、药酒泡小米(优质38度曲酒500克,放入30粒丁香泡一星期即可)、商品鲫鱼饵,再放入几块磨碎的水果糖加钓点水混和均匀喂窝。第一次喂窝用量要大,一般在0.5千克左右,以后要随着上鱼量的减少而补窝。要喂成放射窝或扇形窝(以窝点为中心,向前方、左前方、右前方撒几条直线或半圆),吸引远处的大鲫鱼前来觅食。用大平2号红蚯蚓(用红富士苹果喂养的蚯蚓效果会更好)或红虫挂钩,红虫不如蚯蚓钓上的鱼大。

五、钓组。白狐2号钩(笔者用过多种钩,寒冬钓鲫鱼时都不如白狐2号钩好用。此钩钩条细、钩把长、钩门窄、钩尖锋利、韧性好、易挂蚯蚓,鲫鱼索饵时只张很小的嘴就能把钩饵吸入嘴中)。用柔软不弯曲的直径0.18毫米线做脑线,0.24毫米线做主线,就算钓上条千克重的大鱼也能应付。浮力小的漂,坠就小,能减少鱼吸饵时的阻力。细长漂更能准确的提供寒冷天气鱼吃饵的动作。以上钩、线、漂配备起来的钓组,大鲫鱼在吸饵时的阻力能减少到最小,只要漂动,提竿准能得鱼。

鱼竿可用5.4米以上的中硬调碳素手竿,调漂时要一钩微触底,一钩悬浮,钓灵,浮漂只留一目在水面。要密切注意浮漂的动作,因为水深,只要浮漂上升或下降半目甚至更少就可提竿(有时浮漂微微一动,只要你动作快,也能钓上鱼来)。上钩的多数是大鲫鱼,吃的大多是底钩,拴钩时上下钩相差2~3厘米即可,这样,能增加一竿上双鱼的机会。

5.单片机编程经验集锦 篇五

TXSTA是PIC18FXX8单片机串行通信发送状态和控制寄存器,RCSTA是接收状态和控制寄存器。由于在实际工程中,异步方式用得最多,这里仅介绍异步工作方式,其它方式可参阅相关资料。

1.1 USART 异步工作方式

在异步工作方式下,串行通信接口USART采用标准的不归零(NRZ)格式(1位起始位、8位或9位数据位和一位停止位),最常用的.数据位是8位。片内提供的8位波特率发生器BRG可用来自振荡器时钟信号产生标准的波特率频率。通过对SYNC位(在TXSTA寄存器中)清零,可选择USART异步工作方式。

1.2 USART波特率发生器(BRG)

USART带有一个8位的波特率发生器(BRG),这个BRG支持USRAT的同步方式和异步方式。用SPBRG寄存器控制一个独立的8位定时器的周期。在异步方式下,BRGH位(控制寄存器TXSTA的)也被用来控制波特率。在同步方式下,用不到BRGH位。表1给出了在主控方式下(内部时钟)不同USART工作方式时的波特率计算式。

表1  主控方式下的波特率计算式

SYNC

BRGH=0(低速)

BRGH=1(高速)

0

(异步)波特率=FOSC/[64(X+1)]

波特率 = FOSC/[16(X+1)]

1

(同步)波特率=FOSC/[4(X+1)]

1.3 USART 异步工作方式配置

下面是串行通信异步工作方式配置步骤(顺序可以改变):

(1)配置发送状态和控制寄存器TXSTA;

(2)配置接收状态和控制寄存器RCSTA;

(3)配置RX(RC7引脚)、TX(RC6引脚)分别为输入和输出方式;

(4)通过设定的通信波特率配置SPBRG寄存器,计算公式参见表1;

(5)设置串行通信接收或发送中断是否使能;

(6)清串行通信接收或发送中断标志;

(7)设置串行通信接收中断或发送中断的优先级是高或低优先级中断方式,PIC18单片机默认情况下是高优先级中断,若是低优先级中断,则必须进行设置;

(8)设置串行通信接收和发送数据是否允许。

若用到了中断功能,还需设置总中断和外围中断使能,以开放未屏蔽的中断。

2 USART接口硬件电路

利用PC机配置的串行口,可以很方便地实现PC机与PIC18单片机的串行数据通信。PC机与PIC单片机USART连接最简单的是三线方式。由于PIC单片机输入、输出电平为TTL电平,而RS-232C PC机配置的是RS-232C标准串行接口,二者电气规范不一致,因此要完成PC机与微控制器的串行数据通信,必须进行电平转换。图1为PIC18F458单片机的RS-232电平转换电路。图中MAX232(或MAX202)将PIC18单片机TX输出的TTL电平信号转换为RS-232C电平,输入到PC机,并将PC机输出的RS232C电平信号转换为TTL电平输出到PIC微控制器的RX引脚。J9和PC机的连接方式见RS-232标准,与单片机相接的D型头(J9)的2脚(PIC接收信号)与接PC机D型头的3脚(PC机发送信号)相连,与单片机相接的D型头(J9)的3脚(PIC发送信号)与接PC机D型头的2脚(PC机接收信号)相连,二者的5脚与5脚相连(地相连)。PC机串口数据的发送和接收显示均可采用各种串口调试软件,我们使用的是串口调试助手V2.2(或V2.1、V2.0均可),在网上可以下载该调试软件,该软件操作简单,这里不作介绍。

3 USART异步工作方式编程

串行通信的接收有查询和中断2种方式,在实际应用中,一般不采用查询接收数据,常用的是中断接收数据。发送有中断发送和非中断发送,在下面的例程中我们采用了中断接收数据,发送数据采用中断方式还是非中断方式可以在程序中通过对发送方式标志Send_Mode(不为0,中断方式发送;=0,非中断方式发送)进行设置实现。

在PIC单片机发送数据时,发送中断标志TXIF不能用软件清0,只有当新的发送数据送入发送数据寄存器TXREG后,TXIF位才能被硬件复位,因此在程序中清该标志是无效的。采用中断发送数据的方法是:在主程序中启动发送一串数据的第一个数据,然后利用发送完成中断启动下一个数据发送,当一串数据发送后,不再发送数据,但有发送完成中断标志,程序还要进入一次中断,这最后一次中断对数据发送是无用的,必须将该标志清0,采用的方法是禁止发送使能(TXEN=0)而引起发送被终止或对发送器复位。

下面是一个用串行通信进行接收和发送数据的例程,程序实现功能:PIC18单片机接收到PC机下发的8个数据后,将收到的8个数据以中断或非中断发送方式返送回PC机。

#include “pic18.h”    /* PIC18系列的头文件 */

unsigned char receive232[8];  /* 接收数据数组 */

unsigned char send232[8];  /* 发送数据数组 */

unsigned char receive_count=0; /* 接收数据个数计数 */

unsigned char send_count=0;  /* 发送数据个数计数 */

unsigned char *pointer;   /* 发送数据指针 */

unsigned char i;    /* 程序中用到的循环变量 */

unsigned char SciReceiveFlag; /* =1,接收到8个数据 */

unsigned char Send_Mode=0;  /* 不为0,中断方式发送;=0,非中断方式发送 */

void sciinitial           /* 串行通讯初始化子程序 */

{

TXSTA=0x04;    /* 选择异步高速方式传输8位数据 */

RCSTA=0x80;    /* 允许串行口工作使能 */

TRISC=TRISC|0X80;  /* :将RC7(RX)设置为输入方式 */

TRISC=TRISC&0Xbf;  /* RC6(TX)设置为输出 */

SPBRG=25;    /* 4M晶振且波特率为9600时,SPBRG设置值为25 */

PIR1=0x00;    /* 清中断标志 */

PIE1=PIE1|0x20;   /* 允许串行通讯接口接收中断使能 */

RCIP=0;     /* 设置SCI接收中断为低优先级中断  */

CREN=1;     /* 允许串口连续接收数据 */

if(0==Send_Mode) TXEN=1; /* Send_Mode=0,非中断方式发送,串口发送数据使能 */

else      /* Send_Mode=1,中断方式发送 */

{

PIE1=PIE1|0x10;  /* 允许中断发送 */

TXIP=0;    /* 发送低优先级中断 */

}

}

void interrupt low_priority LOW_ISR()  /* 低优先级中断子程序 */

{

if(RCIF==1)       /* RS232接收中断 */

{

RCIF=0;       /* 清中断标志 */

receive232[receive_count]=RCREG; /* 接收数据并存储 */

send232[receive_count]=RCREG;      /* 接收数据存放到发送缓冲数组 */

receive_count++;     /* 接收计数器加1 */

if(receive_count>7)     /* 如果已经接收到8个数据 */

{

receive_count=0;    /* 接收计数器清0 */

SciReceiveFlag=1;    /* 置接收到8个数据标志 */

}

}

else if((0!=Send_Mode)&&(TXIF==1))  /* 中断发送数据方式且为发送中断 */

{

if(send_count>7)     /* 已经发送完8个数 */

{

TXEN=0;      /* 发送不使能 */

return;

}

else

{

send_count++;     /* 发送计数器加1 */

TXREG=*pointer++;   /* 发送当前应发送数据,发送指针加1 */

}

}

}

main()                                /* 主程序 */

{

INTCON=0x00;      /* 关总中断 */

ADCON1=0X07;      /* 设置数字输入输出口,不用作模拟口 */

PIE1=0;        /* PIE1 的中断不使能 */

PIE2=0;        /* PIE2 的中断不使能 */

PIE3=0;        /* PIE3 的中断不使能 */

Send_Mode=1;       /* Send_Mode不为0,中断方式发送数据;

Send_Mode =0,非中断方式发送数据 */

sciinitial();       /* 串行通讯初始化子程序 */

IPEN=1;        /* 使能中断高低优先级 */

INTCON=INTCON|0xc0;    /* 开总中断、开外围接口中断 */

while(1)

{

if(1==SciReceiveFlag)    /* 是否接收到8个通信数据 */

{

SciReceiveFlag=0;    /* 清接收到8个通信数据标志 */

if(0!=Send_Mode)       /* Send_Mode不为0,中断方式发送 */

{

send_count=0;    /* 发送数据计数清0 */

pointer=&send232[0];  /* 发送指针指向发送数据数组首地址 */

TXREG=*pointer++;  /* 发送第一个数据后,将发送指针加1 */

TXEN=1;     /* 使能发送 */

}

else        /* Send_Mode =0,非中断方式发送数据 */

{

pointer=&send232[0];  /* 发送指针指向发送数据数组首地址 */

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

{

TXREG=*pointer++; /* 发送数据后,将发送指针加1 */

while(1)    /* 等待发送完成 */

{

if(TXIF==1) break; /* 等待发送完成 */

}

}

}

}

}

}

参考文献

上一篇:施工安全会议发言下一篇:高考英语作文必背词汇

相关推荐