欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    AVR汇编百例 - 晋级篇 - 参考程序.docx

    • 资源ID:1678065       资源大小:106.70KB        全文页数:32页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    AVR汇编百例 - 晋级篇 - 参考程序.docx

    :范例91.ORG0.EQUDTPINT-S180.EQUDRPINT=SICOOUTUCR.R16;允许UART接收和发送.8位数据模式INCK15;指向1#分机OUT1.P:OUIrUDR,R15:呼分机号,1:12:2S/03:3«/04TS1.OP:INR16,USRSBRSR16.7RJMPTS1.OP;分机返回机号?INR16,UDRCPR16,R15:分机号正确返回?BRNEOUT1.P1.DIR16JIC:改为9位数据模式TXB8=0OUTUCR,R16TX1.OP:1.DR16,X+OUTUDR.R16:向分机发送数据块R1.6,S18TBST1.:INR17.1.SR;以下提供几个补充参考程序,都带有详细说明和指令注称.它们是主从多机遹讯程序,采;用中断方式写入EEPMM直接对晶振分频产生0.1秒和秒号的精确定时程序,以及RS-232/;RST85标准转换程序,AVR频率计程序,申行时铺口历芯片OS1302读写,共现时法的PUM输出、;猿入捕获测周期程序和定时信号获取,以及DS18B20测湿等程序.多机通讯主要用8和9(数;据模式区分被选分机(9位)和其它分机(8位),到达主机只与被选分机交换数据之目的.以中;断方式写Ef-TROM的优点是可与系统运行同时进行(即在规写入),占用很少机时.:精确定时用定时/计数器1(或0)直接对MeU主频(不设分领)设定时间常数,分频精度可到达;1HZ.RS-232/RS-185标准转换程序中AVR不作中转,使两种器件相关脚位也接连接.以TCNTO;定时,以TO引脚接收RS232数楙.以收到RS232字符起始位下跳沿或结束符($03)为依据.;控制切换RST85的收发使能.(系统中的主AVR可兼做对通信标准之监控转换,即只是在完成;主要工作任务的同时附带'进行),具体过程不再细述.申行时铺口历芯片DS1302具体积小,;可擢性高,与单片机连接方便等优点.;以下程序请参看有关章节或程序中的注择;多机通讯主机程序/晶振4WIZ:以8/9位数据模式区分被选/未被选分机通讯:IJBRR,12波特率19200(RE1.ERR.-0.16%):主机对I瓦2W,3#,,信分机发送数据块在S180T8F,$190-19E$1AOTAD和S1.BO-IBFSTRT38:RJMPRST38:主机从1.a,2»,3*,,信分机接收数据块在S1.CO-ICF,$1DO-1DF,$1EoTEF)和$1FOTFF.ORG$00BRJMPSTRT38.ORG$00CRJMPSTRT38:主机不设申口中断,只以杳询接收.ORG$011RST38:1.DIR16,12OUTUBRR,R16:设波特率:BAUDKATE=FCP/16(UBRR+1)C1.RR15初始化分机号1.DIR27,HIGH(DTPINT)1.DIR26.1.OW(DTPIND:发送数据指针(首指$180)1.1)1R29.HIGH(DRPINT)1.DIR28.1.OW(DRPIND:接收数据指针(首指$1CO)NEXTNO:1.DISBRSRJMPR17.5TEST1.:等待发送完成CPIR1.6,SOABRNETX1.OP*RXTST:INR17.USRSBRSR17,7:RXC=I收到数据RJMpRXTST;等待接收分机返回数据块INR16,UDRSTY+.R16:存储接收数据CPIR16,30A:分机数据块发完?BRNERXTSTMOVR16,R15CPIR16.4;与分机轮询通讯完毕?BRNENEXW:未完转对下一分机通信H38:RJMpIIH38;否则踏步(可改为处理分机返回的数据,之后再进行下一个轮询.DSEG.ORG$180DTPIW:.BYTE$40;$11$45$65$73$46$42$10S6FS33$的$66$5CSWSIB$0DSOA:$42S1.F$66$78$47$45$44$63$32$48$60$7C$6D$45$0DSOA:$43$56$55$53$4D$4F$40S2ES31$42$67$4C$47$4A30DSOA;$15$54$59$63$3D$4B$48S2F635$48$69$3C$77$43$0DSOA.ORGS1.CODRPINT:.BYTE$10;范例92.ORG0:多机通讯IU分机程序/品版4MIIZ.EQUDTPIT1.-S180:<UBRR)=12波特率为19200(RE1.ERR.-0.16%).EQUDRpN门=$ICOSTRT39:IUMPRST39.ORG$00BRJMP1.iARXC:85351JART接收完成中断-ORGSOOCRJMPUATXCIUART发送完成中断,ORG$011RST39:C1.RR18:去除分机被选中(R18.6)和主机数捌块接收完毕标志(R18.7)1.DIR16.12OUT1.三R,R16;设波特率IBAUDRATE=I(X)000016*(12+1)=192001.DIR16,High(DRPNTI)MOVR8.R161.1)1Riei1.OW(DRPNT1.)MOVR9,R16;r8,r9:接收数据指针(FIRSTPOINTTOS1.CO)1.DIR16,$98;允许UART中断接收,8位数据模式OUTUCR,R16SEIRXDTS:SBRSR18.6;主机呼号已收到(若收到,在R17中?RJMPRXDTSOUTIW,R17:返还该机号TXDON:INR16,ISRSBRSR16,5RJMPTXD(N;该机号发送完成?1.DIRI6,$9C;允许URRT中断接收,9位数据模式,TXB8=0OUTIICR,R16RCVB1.K:SBRSR18.7RJM,RCVB1.K:主机发来数据块已接收完毕?1.DIR16,HIGH(DTPIT1)MOVR6,R161.DIR16.1.三(DTPIT1.)MOVR7,R16;设发送数据指针M",首指$1801.OIR16.53C;允许UART中断发送,9位数据模式,TXBS=OOUTUCR,R16TXDN:SBICUCR.5RJMI,TXDN:发送完毕?RJMPRST39::UART中断接收程序1.RXC:SBIC1.SR14RETiINR14,SREG:祯错误(主机正与其它分机进行9位数据模式通信>,不予接收;保存当前状态TSTR18BREQN1.MIi:(R18)=0时收到数据,只可能是机号,转去核实PUSHR16;否则为主机向本分机发来数据块(9位模式,机号已符合)PUSHR26PUSHR27INK17.1.'DR:接收数据MOVXH,R8MOVX1.R9;取接收数据指针STX÷,R17:转入RAYMOVR8,X1.1.MOVR9,X1.;存数据指针CPIR1.7,$OA:是数据块结束符1F?BRNERSCOM1.SBRR18.$80:收到完整数据块标志RSCOM1.:POPR27POPR26POPR16DRETI:OUTSREG1RHRETIN1.三:INR17,IW:取出数据CP1.R17.1:是体分机?2#分机与$02比较/3#分机与603比较.BRNEDRETI;机号不符合,转!SBRR18.340;也机号符合标志RJMPDKETI:UART中断发送程序UATXC:PUSHR16;r6r7:发送数据指针,首指$180INR16.SREGPUSHR16PUSHR26PUSHR27MOVM1.R6MOVX1.,R7:取出发送指针1.DR16,X+;取数据,调指针MOVR6,XHMOVR7.X1.OUTUDR,R16:送入发送存放牌CPIRI6,$0ABRNESDCOMCBIUCR.5:发送最后1个字符后,禁止发送存放潺空中断(C1.RIDRIE)1.DIR16,I1.1.GII(DKPIfJT)MovR8,R161.DIR16,1.0W(>RINT)MOVR9,R16;接收数据指针初始化(POINTTOS1.CO)SDCOM:POPR27POPR26POPR16OUTSREG.R16POPR16RETI.DSEG.ORG$180DTPITk-BYTE$10-ORGS1.CODRPNT1:.BYTE$10;S11S15$65$73$46$42$40$61:$33$44$66$5C$4D$4BSODS0;范例93:以中断方式写入EEPRoM(仅对8535.8515无此功能),克服查询方式占用过多机时的跳点.;并可在处写入;运作过程特点如下:;主程序初始化时设置EEPROM就绪(ready)中断使能位和中断总使能位;(2)在主程洋中写入第一个字节,写入完成后引起就绢中断,其他写入在中断效劳中完成;(3)本程序为一写入特例.写入地址为$100-$IFF,可作适当修改(如设块长计数器等)MQ为防止离优先级中断破坏写入过程,中断效劳中不允许中断嵌套;(5)本例为简化程序只以查询写入地址循环作为背景程序,实用时UJ改为具体的背景序;(6)如能确信当前系统没有EEPROM正在写入,可删除对其进行查询局部.SI1.I-EP:1.1)1R16,IIIGH(amend)OUTSP1.1.1R161.DIR16.1.OW(ra«?nd)OUTSP1.RI6SBIEECR,3;设置EEPROM就绪(ready)中断使能位SEI:中断总使能RJMPSKIW.ORG$00FRJMPEEPRDY;8535EEPROM就绪(ready)中断向嵬SRTf:1.DIYIU1.1)1Y1.0;EEPROM写入首地址:$1001.DIX1.,$60;欲写入数据块首地址:S60C1.RXIIWEEPO:SBICEECR,1:当前有EEPRoM写入操作,有则等待写入完成RJMPWEEPORCA1.1.WREEP;写入第一个字节,($60)->5100,写入完成后,EEWE=O时引发EEPRoY就绪中断INCY1.;调整写入地址指针HHWEEP:TSTY1.BRNEHHWEEPCP1.Y1.,2;写入地址到达$200后,写入完成BRNEHHWEEPCBIEECR,3:禁止EEPROM就绪(ready)中断WIX)N:RJMPW1.XA;踏步EEPRDY:INR6,SREGPUSHR16RCA1.1.UREEP;写入一个字节INCY1.BRNEWRETIINCYH:EEPRoM末地址为$IFFWRE11:POPR16OUTSREG.R6RETIWREEP:OU1.EEARKYH;OUTEEAR1.1Y1.:写入地址送入EEAR1.1)R16,X+:取数据,调指针OUTEEDR,R16;数据写入EEPRoM数据存放器SBIEECR,2;设置EEPROM写入总使能位EEMeESBIEECR,1:设置EEPROX写入使能位EEWERET;范例94:精确定时产生01.秒信号:用定时/计数器1定时,不分相定出0.1杪信号,由PC5脚由出正脉冲.:晶体-1.000119MHZ,计400012个数定出0.1秒信号;对定时/计数器1重装常数进行加法补祭(扣除自然计数和补偿占用时间:加法补偿若产生进位.将中断次数减I-ORG$000:精确定时产生O.I秒信号STRT21:RJMPRST21-ORG$006:8515t1overf1.owvectorRJMPT1.OVF1.M(KXH2=65536*7-58710=7*$1.OOOO-$E57"故TCC=SE571,ORG$00DRST24:1.DIR16,HIGH(r<mend)OUTSPH1R161.DIR16,1.0W(raend)OUTSP1.1R16SBIDDRC.5:PC5,0.1秒号输出(旧有效)CBIPORIC,51.DIR16,1;不分分iOUTTCCR1.B,R161.DIR16.SE5OUTTCNT1.H,K161.DIR1.6.571OUTTCNT1.1.,R16;写入时间常数TCC1.DIR16.$80OUTT1.MSKtR1.G:允许定时/计数器1溢出中断1.DIRI6.7;7次中断输出0.1秒号MOVR6.R16SEI;中断总使能H1.1.1:KJMPPUSHR17INR7.SREGDECR6;中断次数战一BRNEGOON1.O;(U秒时间到?1.DIR16.7MOVR6,R16:重新装入中断次数SHIMRTC.5:0.1秒号输出前沿INR17,TCNT1.1.:INR16,TCNT1II;*注入TCM1.自然计数值1.DIR18,J7C:*TcC=$E574IH)R17,R18;*TCC+8=$E57C1.DIRI8,$E5;*8条单周期补偿指令占用8个时钟周期ADCR16,R18修正后TCC=SE574+(TCNTD+8OUTTCNT1II,R16:*OUTTCM1.1.,R17:*曳新袋入补偿修正后的TCCBRCCGoONO9R6H1.1.1R16T1.OVF1.:PUSII:加法补借若产生进位,将中断次数减I;数捌处理略DECG00N09::RCAI.1.AC1.K1.:0.1秒走时软时钟RJMPGOON1.1.G(X)N1.O:CHIMRTC,5;怆出伯号后沿GOON1.1.:POPR17POPR16OUTSREG,R7RETI;苑例95:用定时/计数器1定时,不分痂定出1秒信号,由PC5脚恤IBjE脉冲;晶体4.000133MHZ,计4000133个数定出1秒信号;对定时/计数器1重装常数进行加法补恃(扣除自然计数和补偿占用时间.:加法补偿若产生进位.将中断次数减I.ORG$000:精确定时产生秒号STRT25:RJMpRST25,ORGRJMP.ORG$006T1.OVFB:4000133-62*6553663099-62*S10000$F67B/故TCCMF67B$001)RST25:1.DIR16,IIIG1.Kraaend)OUT1.DIOUTSBICBI1.DIOUT1.DIOUT1.DIOUT1.PIOUT1.DIMOVSEISPH1R16R16,1.01(ra三e11d)SP1.RI6DDRC,5;PC5输出秒信号正脉冲PORTC,5R16.1;不分第TCCR1.B,R16R1.6,5F6;TCNT1.H,R16:写入TCC高8位R16.37B;TCNT11.,R16;写入TCC低8位R16,$80;TIMSK1R16;允许T/C1溢出中断R16,62:62次中断定出秒号R6,R16IIII1.B:RJMPHH1.B:等待中断T1_OVFB:PUSHR16PUSHINDECBRNE1.1)1MOVSBIININR17R7,SREGR6;到62次中断?GOON12R1.7.62R6,R17;Hi装中断次数PORTC,5;输出杪信号R17,TOiT1.1.;*R16,TCNT1.H:*读入T/CI自然计数位1.DIR18,$83:*TCC=$F67BA【)0R17,R18:*TCC+8=$F6831.DIR1.8,$F6;*8条单周期补偿指令占用8个时钟周期ADCR16,R18:*OUTTCNT1II,R16:*OUTTCKT1.I.,R17:*重新袋入补偿脩正后的TCCBRCCGOON19DECR6:加法补偿若产生进位将中断次数减1G(X)N19:数据处理珞RJMI1GOON13GN12:CBIPORTC,5:杪号后沿G00N13:POPR17POPR16OUTSREG,R7RETI:范例96;运作特点如下:;此程序为一完整频率测里显示程序,所测频率较高(2MHZ),使用4兆晶振:程序兼有启动后门狗及对其管理功能;以TCNTO箱确定时输出秒号作为捕获信号,用TCVI1.对被测信号频率计数JHTCvrO宜接对(85】5河兆晶振计数产生秒号,定时希度达IHz主常数选为256(即0);由PAO输出精确定时产生的秒信号(与ICP脚相连)捕获TCW1.计数值,相Mir频率;将颇率转换为十进制数,装入显示缓存区,调DSPA子程序叔示之参考范例27和图,15);更袋TCC时对TCC进行修正,若修正(减法)计算不产生借位,将中断次数n减1;被测频率可近2兆,故须设1字节扩展计数器,以tcnt1.溢出中断对其计数供3字节计数器);在TCNT1.捕获中断效劳中,以3字节减法计算频率,并置位T标志;若TCNTI溢出标志置位;必须提前增1扩展计数湍.并符T(M1.溢出标志去除(不再增1扩展计数器),再计算频率.;TCNT1.溢出中断优先级高于11o,故TCNT1.中断效劳可能影响杪号精度,导致测盘误差;可以扑队法剔除坏值,即将几个连续采样按大小顺序排队,'掐头去足只留中间再作平均.;也可以监视1.ED显示,连续3秒稳定显示(高频测Ift允许有2i1.z误差)即为所测频率正确值.;若品振采用12克,被测信号频率(酒空比1:1或接近I:D可接近6兆.ORG$000STRT26:IUMpRST26;实测8515品振频率4.000167MHZ计4000167个数为1秒.ORG$003RJMPT1_CAPT:T/C1捕获中断.ORG$006RJKpT1.OVRF:T/C1溢出中断.ORG$007RJMPTO_OVFB:T/CO溢出中断-ORGJOOD:4000167=256*15626-89=256*$3DOA-89/故TeC=89n=15626RST26:1.D:R16rIIIGH(ra三end)OUTSPH.R161.DIR16,1.0W(ra三end)OUTSP1.1R16SBIDDR,.0:PAO输出秒定时信号,捕获频率计数值CHIPORTA,O:初始为低C1.RR22C1.RR21C1.JJR20:R20,R21,R22为频率量瞬时计数采样C1.RR2WDR1.DIR16,SOD;启动看门叫溢出时间为0.49OUTmCR.R16:写入看门狗控制存放器C1.KXi1.1.DIX1.,$6C:Se1.thedisp1.aybufferpointerT261.P:STX+,R2CPIR26.$74BRNET261.P;去除$6C-$731.DIR16,501:17CO为定时器,不分频OUTTCCRO,R161.DIR16.89*OUTTC1.fTO1R16:写TCC到T(Xro1.PIR16,$C6:上升沿捕获,允许噪音泄除,外部脉冲计数OUTTCCR1.B,R161.DIR16.$8A;允许T/C1捕获,溢出以及T/CO溢出中断OUTTIHSK,R16;1.DIR16,S3E:设15626(=$3POA)次中断裔位字节已增1)MOVR1,R16(*MOVR19.30A*SEIHH1.C:BRTSHH2C;己采集到频率?RCA1.1.DSPA;仍显示原数据RJMPIIII1.CHI12C:CU:频率瓜已在R3,R4,R5MOVR9,R3MOVR1.O1R4MOVR11.R5RCAI.1.COW1.:翻为十进制数(R12R13RHR15<-R9RIORH)1.DIX1.,$7-1C1.RXH1.DIY1.15C1.RYHHII1.OP:1.DR16,Y;分解十进制数,送入1.ED显示区($6-$73)ADNIR16,$0FST-X.R161.1)R16,YS1.APR16ANDIR16,$01-ST-X,R16DECY1.CPIR26.$6C:分解完毕?BRNEHU1.OPRJMpHH1.C;显示新数据T(1.OVFBSEI;TCNTO溢出.允许中断嵌套PUSHINR16R«,SREGDECRI9BRNEGOoNI3CBIPORTA1O;秒信号后沿DECK1.:到15626次中断?BRNEGOON13SBIPORTA1O;杪定时捕获信号附沿INR16.TOTO:«TCNTO自然计数值SUBIR16,164;*89之补为167,考虑补偿操作本身耗时,减去164OUTTCNT0,R16;*第15626次中断后,IE新装入TCC=89+(TCNTO)+3到TCyro1.DIR16,$3EMOVR1.R16;重新装入中断次数1.1)1R19,SOABRCCGOON13;补偿操作如有借位,将中断次数版1DECR19;->2522532542550I2345.加法计数方向一>GooNF>0PR16;IIIIiiiiiiiOUTSREGfR8:<-T5626次范围->(T5625次范围(补偿后进(借位;C=1.)->RETIT1_OVRF:INR18.SREG;TCNTI溢出中断效劳INCR3:R3为TCNT1.扩展字节OUTSREG,R18RETIT1_CAPT:IINR6,SREG:17C1.捕获中断PUSHR16INR5,ICR1.1.INR4.ICR1.HMOVR16,R22MOVR22,R5SUBR5,R16R16,R21R21,R4:与上一次采奥的频率量相减,得到嫉率值SBCR4,K16INR16,TIFRSBRSR16,7RJMPT1.CP1.INCR3;8515TCYn溢出中断,预先对扩展字节计数1.DIR16.580:并将溢出标志去除,(中断返回后不可计数)OUTTIFR,R16:去除TIFR,7T1.CP1.:MOVR16,R20MOVR20,R3SBCR3.R16:采集侦率推在R3.R4,R5SET:建采集频率量标志POPR16OUTSREG,R6RETI:范例97:本时基资源共享式综合测邠系统,具有精确定时PI1.N输出、输入捕获测外部信号:周期、获取TCNT1.溢出中断信号等多种功能.特点是TCNT1.启动之后即不停运行.;时班资源共享式PWM的特点在于装入比较匹配存放器之数据方式,它不是在比较;匹配到达时去除定时/计数器,再装入商(或低)电平时间常数:而是当比较匹配:到达时以定时/计数器当前值加上时间常数后招和装入比较匹配存放零,二者效果:是相同的.可称前者为静态设置,后者为动态设置.后者因不停运行定时/计数器二,其资源可同时用于输出比较匹S1.A及B、输入捕获、定时信号输出等等。;本程序使用晶体标称值MIZ实测为4,000,236HZ,使用定时/计数器1真接:对主频精确定时设定PUM上下电平的维持时间.以ICP脚猛入被测周期瞅冲信号.:本程序Hn!之树空比与葩例51相同,为5修秒(高):10玄杪.故维持:高电平的时间行数为300。,236+200=20,001,雉持低电平的时间常数为:4,000,236÷100=40.002.此即输出比较匹配R到达时交替写入比较西配寄:存潺OCR1.A之对TCNTI当前内容的超前(ft.:因以T(MI直接对主频计数,痂率高周期短,输入痛狭的外部信号周期不能;大于65536÷九000,236=0.01638(秒)即16.38噩秒但也不能太小,对频率:较高的肽冲信号应改为测菽率).以相铭两次捕获值相及之差除以主频得到被测信:号之周期(单位为秒久:为防止小数除法运匏,可将相邻两次桶获值相战之基先乘以I.000.再将乘枳;除以主频,将得到以庵秒为单位的膜期伯:考虑到除法子程序D1V16只实现整数;除法,且除数不能大于65535,可将主频缩小100倍,即以40,002作除数,故:除得之商扩大了100倍.这样符整数商二翻十后.其末两位皆为小数.本程序采用:这种计算方法.并在主撕环程序中网DSPA子程序显示所测周期伯;若将以上算法中柒以】,OOO改为柒以10,OOO,并增加对商的方位转换,:其余保存不变,则所得商数末3位音为小数位。本笄法精度高于上一种方法,如有:提高测盘精度之必要,应采用后种算法.:若扩大冽i信号周期,应对TCNT1.溢出信号计数,做3字节减法(见葩例96);后再计算被测信号周期(除以4,000,236)。所测信号周期可达4.194杪。:本例如定时精度可与范例51整如卜比较:本例中上下电平分别对主频计数:20,001个和40.002个.葩例51中上下电平分别对主版计数19.968个和:40,OOO个.本例如定时精度明显岛于范例51.;本例如TCNT1.产生溢出中断之周期为16.38墨秒,其频率约为61HZ.在TCNT1.:溢出中断效劳子程序中由PA3以正脉冲形式输出该信号.ORG$000;USE8535STRT43:RJMPRST43:5.0O(MWS(海):9.9999MS(低)晶振4,000.23&IZ.ORG$005RJMPT1.CP43;T/C1输入插换中断-ORG$006RJMPT1.CA43:T/C1输出比较几配A中断.0RG$008RJMPT1.OWI3:TCNT1.溢出中断.ORG$011RST43:1.D1.IR16,High(RAMEND)OUTSPH1R161.1)1R16,1.Ott(RAMEND)OUTSP1.,R161.DIR16,580;T/C1比较兀配A到达时,去除输出脚Oe1.AOUTTCCR1,R161.DIR1.6.541:不分频,比较匹配到达不清TCNT1:上升沿捕获/禁止噪音港除OUTTCCR1.B,R16SBIDDRD.5SBIPORTD15;PD5(OC1A)初始化输出为高SHIDDRA.3:PA3为TC、门溢出中断信号输出CBIPORTA,3;PA3输出为低1.DIR16,$IEOUTOCR1A1I.R161.1)1R16,S21;写比较匹也存放器"4H21=20001脓宽5至秒)OUTOCR11.,R161.DIR16,$34;允许输入捕获/输出比较P1.配A/TCNTI溢出中断OUTTIMSK1R16C1.RR21C1.RR20;捕获值皆存单元C1.J?X1.1.1.DIX1.$6CC1.1.M3:SIrX+,R20CPIX1.374BRNEC1.R43:去除显示区$6C-$73SEIHH13:RCA1.I.DSPA:背景程序:显示捕获频率信号之冏期,总位:充秒BRTCH1.H3RCA1.1.FI1.2:T=1,已捕获到数据在R4,R5先关显示C1.TMOVR14.RAMOVR15.R51.DIR16.3MOVR12,R161.1)1R16,SEB;取立即数100O(=$3£8)MOVR13,R16RCA1.1.Mi1.1.6;乘以100O1.DIR16,S9C;使周期总位为青秒MOVRIO,R161.DIR16,$42;$9042=40002MOVR11,R16RCA1.1.DIV16;除以立即数40002,得到被测脉冲周期之单位为意杪,且含因子100MOVR16,R14MOVR17,R151.1)IRI&31.DIRI9,SE8RCA1.1.CONVT;二物匕得千位STS$70.RH;送入显示区C1.RR1.H1.DIR19,$64RCA1.1.CONVT;二翻匕得百位1.DIR19.$29:在百位处加小数点(百位实为个位)SUBR11,R19STS$71,R1.1.;送入显示区1.DIR19.10RCA1.1.CONVT;二翻十,得十位STS372.R1.1.STS573,R17;小数送入显示区RJMPHH43;转去显示新采样数据COWT:C1.RR1.1.COV1.OP:SUHR17,K19SBCR16,R18;减去十进制数某位之权BRCSCONVCMINCR1.1.:此减.增权RJMPC(MJOPCOWCM:ADDR17,R19:否则饯或余数ADCR16,R18RETT1.CA43:SEIINRI1SREGINR21,TCCR1.ASBRSR2i,6KJM,O1.TI-W;当前给出低电平,转INR24*OCR1.A1.INR25,OCR1.AUSUBIR24,SDF;1.OI(-20001)SBCIR25,SBI:H1.Gin-20001)/$B1.DF为20,(X)I之补码OUTOCR1.AH,R25OUTOCR1.A1.,R24;写入海电平维持时间超前值1.DIR24.$80:比较匹配A到达时,OeIA输出为低OUTTCCR1.A,R24OUTSREG,R1.RETIO1.T1.W:INR24,OCR1.A1.INR25,OCRIAHSUBISKCIOUTOUT1.DIOUTOUTRETIR24.$BE:1.OW(-40002)R25,$63:H1.GH(-40002)/$63BE为40,002之补码OCR1.AH,R25;OCR1.A1.,R24;写入低电平维持时间超前值R24.$C0:比较匹配A到达时,OaA输出为高TCCR1.A,R24SREG,R1.T1.CP43:INR3,SREG:T/C1.捕获中断INRS.ICR1.1.INMOVMOVS1.BMOVMOVSBCSETOUTRETIR-1.ICR1.HR17,R21R21,R5R5,R17R17,R20R20.R1.;与上一次来呆的频率量相诚,得到顼率值RhR1.?:在R%R5中:建采集频率城标SREG,R3T1.oV43:SE1.SBISB1.SBISB1.CB1.RETIPOR1.A,3:OUTPUTTHE61HZP1.1.SPORTA,3PORTA.3PoRTA.3MRTA,3:脉冲宽度2微秒;范例98:Ww232'R1.oUT接X-183'DIMX183'RO接MAX232'THN;IIITCNTO配合PBO以软件接收RS-232数据对485进行整控:PB1.接DE和/RE:AVR对485发来数据不接收,该数据经MAX483,RO>MX232,T1.IN->RS232远痂;数据起始位下降沿引起中断接收,中断效劳一开始.将对RST85的控制改为允发禁收使KS-:232发来数据也接通过RST85向远端发送:当收到RS-232数据结束符$03后,经半位比时,对RS-485的控制改为允收禁发使能接收RS-:485远端发来数捌(故要求经RS232发来数据要以303

    注意事项

    本文(AVR汇编百例 - 晋级篇 - 参考程序.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开