AVR汇编百例 - 晋级篇 - 参考程序.docx
《AVR汇编百例 - 晋级篇 - 参考程序.docx》由会员分享,可在线阅读,更多相关《AVR汇编百例 - 晋级篇 - 参考程序.docx(32页珍藏版)》请在课桌文档上搜索。
1、:范例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;以下提
2、供几个补充参考程序,都带有详细说明和指令注称.它们是主从多机遹讯程序,采;用中断方式写入EEPMM直接对晶振分频产生0.1秒和秒号的精确定时程序,以及RS-232/;RST85标准转换程序,AVR频率计程序,申行时铺口历芯片OS1302读写,共现时法的PUM输出、;猿入捕获测周期程序和定时信号获取,以及DS18B20测湿等程序.多机通讯主要用8和9(数;据模式区分被选分机(9位)和其它分机(8位),到达主机只与被选分机交换数据之目的.以中;断方式写Ef-TROM的优点是可与系统运行同时进行(即在规写入),占用很少机时.:精确定时用定时/计数器1(或0)直接对MeU主频(不设分领)设定时间常数,
3、分频精度可到达;1HZ.RS-232/RS-185标准转换程序中AVR不作中转,使两种器件相关脚位也接连接.以TCNTO;定时,以TO引脚接收RS232数楙.以收到RS232字符起始位下跳沿或结束符($03)为依据.;控制切换RST85的收发使能.(系统中的主AVR可兼做对通信标准之监控转换,即只是在完成;主要工作任务的同时附带进行),具体过程不再细述.申行时铺口历芯片DS1302具体积小,;可擢性高,与单片机连接方便等优点.;以下程序请参看有关章节或程序中的注择;多机通讯主机程序/晶振4WIZ:以8/9位数据模式区分被选/未被选分机通讯:IJBRR,12波特率19200(RE1.ERR.-0
4、.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(DTPI
5、ND:发送数据指针(首指$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;
6、否则踏步(可改为处理分机返回的数据,之后再进行下一个轮询.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分机程序/品版4M
7、IIZ.EQUDTPIT1.-S180:,不予接收;保存当前状态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
8、.三: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.
9、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无此功能),克服查询方式占用过多机时的跳点.;并可在处写入;运作
10、过程特点如下:;主程序初始化时设置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)
11、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:TS
12、TY1.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;设置E
13、EPROM写入总使能位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故TC
14、C=SE571,ORG$00DRST24:1.DIR16,HIGH(rmend)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:KJMPPUSHR
15、17INR7.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.1R
16、16T1.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:RJMpRST
17、25,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;
18、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:*OUTTCN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR汇编百例 晋级篇 参考程序 AVR 汇编 晋级 参考 程序

链接地址:https://www.desk33.com/p-1678065.html