电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

AVR汇编百例 - 晋级篇 - 参考程序VIP专享VIP免费

AVR汇编百例 - 晋级篇 - 参考程序_第1页
AVR汇编百例 - 晋级篇 - 参考程序_第2页
AVR汇编百例 - 晋级篇 - 参考程序_第3页
;以下提供几个补充参考程序,都带有详细说明和指令注释.它们是主从多机通讯程序,采;用中断方式写入EEPROM,直接对晶振分频产生0.1秒和秒号的精确定时程序,以及RS-232/;RS-485标准转换程序,AVR频率计程序,串行时锺日历芯片DS1302读写,共享时基的PWM输出、;输入捕获测周期程序和定时信号获取,以及DS18B20测温等程序.多机通讯主要用8和9位数;据模式区分被选分机(9位)和其它分机(8位),达到主机只与被选分机交换数据之目的.以中;断方式写EEPROM的优点是可与系统运行同时进行(即在线写入),占用很少机时.;精确定时用定时/计数器1(或0)直接对MCU主频(不设分频)设定时间常数,分频精度可达到;1HZ.RS-232/RS-485标准转换程序中AVR不作中转,使两种器件相关脚位直接连接.以TCNT0;定时,以T0引脚接收RS-232数据.以收到RS-232字符起始位下跳沿或结束符($03)为依据,;控制切换RS-485的收发使能.(系统中的主AVR可兼做对通信标准之监控转换,即只是在完成;主要工作任务的同时'附带'进行).具体过程不再细述.串行时锺日历芯片DS1302具体积小,;可靠性高,与单片机连接方便等优点.;以下程序请参看有关章节或程序中的注释。;范例91;多机通讯主机程序/晶振4MHZ.ORG0;以8/9位数据模式区分被选/未被选分机通讯.EQUDTPINT=$180;UBRR=12波特率19200(REL.ERR.=0.16%).EQUDRPINT=$1C0;主机对1#,2#,3#,4#分机发送数据块在$180-18F,$190-19F,$1A0-1AF)和$1B0-1BFSTRT38:RJMPRST38;主机从1#,2#,3#,4#分机接收数据块在$1C0-1CF,$1D0-1DF,$1E0-1EF)和$1F0-1FF.ORG$00B;RJMPSTRT38.ORG$00CRJMPSTRT38;主机不设串口中断,只以查询接收.ORG$011RST38:LDIR16,12OUTUBRR,R16;设波特率:[BAUDRATE=FCP/16(UBRR+1)]CLRR15;初始化分机号LDIR27,HIGH(DTPINT)LDIR26,LOW(DTPINT);发送数据指针(首指$180)LDIR29,HIGH(DRPINT)LDIR28,LOW(DRPINT);接收数据指针(首指$1C0)NEXTNO:LDIR16,$18OUTUCR,R16;允许UART接收和发送,8位数据模式INCR15;指向1#分机OUTLP:OUTUDR,R15;呼分机号,1:1#/2:2#/03:3#/04:4#...TSLOP:INR16,USRSBRSR16,7RJMPTSLOP;分机返回机号?INR16,UDRCPR16,R15;分机号正确返回?BRNEOUTLPLDIR16,$1C;改为9位数据模式TXB8=0OUTUCR,R16;TXLOP:LDR16,X+OUTUDR,R16;向分机发送数据块TESTL:INR17,USRSBRSR17,5RJMPTESTL;等待发送完成CPIR16,$0ABRNETXLOP;RXTST:INR17,USRSBRSR17,7;RXC=1收到数据RJMPRXTST;等待接收分机返回数据块INR16,UDRSTY+,R16;存储接收数据CPIR16,$0A;分机数据块发完?BRNERXTSTMOVR16,R15CPIR16,4;与分机轮询通讯完毕?BRNENEXTNO;未完转对下一分机通信HH38:RJMPHH38;否则踏步(可改为处理分机返回的数据,之后再进行下一个轮询).DSEG.ORG$180DTPINT:.BYTE$40;$41$45$65$73$46$42$40$6F$33$44$66$5C$4D$4B$0D$0A;$42$4F$66$78$47$45$44$63$32$48$60$7C$6D$45$0D$0A;$43$56$55$53$4D$4F$40$2E$31$42$67$4C$47$4A$0D$0A;$45$54$59$63$3D$4B$48$2F$35$48$69$3C$77$43$0D$0A.ORG$1C0DRPINT:.BYTE$40;范例92.ORG0;多机通讯1#分机程序/晶振4MHZ.EQUDTPIT1=$180;(UBRR)=12波特率为19200(REL.ERR.=0.16%).EQUDRPNT1=$1C0STRT39:RJMPRST39.ORG$00BRJMPUARXC;8535UART接收完成中断.ORG$00CRJMPUATXC;UART发送完成中断.ORG$011RST39:CLRR18;清除分机被选中(R18,6)和主机数据块接收完毕标志(R18,7)LDIR16,12OUTUBRR,R16;设波特率[BAUDRATE=4000000/16*(12+1)=19200]LDIR16,HIGH(DRPNT1)MOVR8,R16LDIR16,LOW(DRPNT1)MOVR9,R16;r8,r9:接收数据指针(FIRSTPOINTTO$1C0)LDIR16,$98;允许UART中断接收,8位数据模式OUTUCR,R16SEIRXDTS:SBRSR18,6;主机呼号已收到(若收到,在R17中)?RJMPRXDTSOUTUDR,R17;返还该机号TXDON:INR16,USRSBRSR16,5RJMPTXDON;该机号发送完成?LDIR16,$9C;允许UART中断接收,9位数据模式,TXB8=0OUTUCR,R16RCVBLK:SBRSR18,7RJMPRCVBLK;主机发来数据块已接收完毕?LDIR16,HIGH(DTPIT1)MOVR6,R16LDIR16,LOW(DTPIT1)MOVR7,R16;设发送数据指针r6r7,首指$180LDIR16,$3C;允许UART中断发送,9位数据模式,TXB8=0OUTUCR,R16TXDN:SBICUCR,5RJMPTXDN;发送完毕?RJMPRST39;:UART中断接收程序UARXC:...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部