




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
; 以下提供几个补充参考程序,都带有详细说明和指令注释.它们是主从多机通讯程序,采;用中断方式写入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 .ORG 0 ;以8/9位数据模式区分被选/未被选分机通讯.EQU DTPINT=$180 ;UBRR=12 波特率19200(REL.ERR.=0.16%).EQU DRPINT=$1C0 ;主机对1#,2#,3#,4#分机发送数据块在$180-18F,$190-19F,$1A0-1AF)和$1B0-1BFSTRT38: RJMP RST38 ;主机从1#,2#,3#,4#分机接收数据块在$1C0-1CF,$1D0-1DF,$1E0-1EF)和$1F0-1FF .ORG $00B ; RJMP STRT38 .ORG $00C RJMP STRT38 ;主机不设串口中断,只以查询接收 .ORG $011RST38: LDI R16,12 OUT UBRR,R16 ;设波特率:BAUD RATE=FCP/16(UBRR+1) CLR R15 ;初始化分机号 LDI R27,HIGH(DTPINT) LDI R26,LOW(DTPINT);发送数据指针(首指$180) LDI R29,HIGH(DRPINT) LDI R28,LOW(DRPINT);接收数据指针(首指$1C0)NEXTNO: LDI R16,$18 OUT UCR,R16 ;允许UART接收和发送,8位数据模式 INC R15 ;指向1#分机OUTLP: OUT UDR,R15 ;呼分机号,1:1#/2:2#/03:3#/04:4#.TSLOP: IN R16,USR SBRS R16,7 RJMP TSLOP ;分机返回机号? IN R16,UDR CP R16,R15 ;分机号正确返回? BRNE OUTLP LDI R16,$1C ;改为9位数据模式 TXB8=0 OUT UCR,R16 ;TXLOP: LD R16,X+ OUT UDR,R16 ;向分机发送数据块TESTL: IN R17,USR SBRS R17,5 RJMP TESTL ;等待发送完成 CPI R16,$0A BRNE TXLOP ;RXTST: IN R17,USR SBRS R17,7 ;RXC=1 收到数据 RJMP RXTST ;等待接收分机返回数据块 IN R16,UDR ST Y+,R16 ;存储接收数据 CPI R16,$0A ;分机数据块发完? BRNE RXTST MOV R16,R15 CPI R16,4 ;与分机轮询通讯完毕? BRNE NEXTNO ;未完转对下一分机通信HH38: RJMP HH38 ;否则踏步(可改为处理分机返回的数据,之后再进行下一个轮询) .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 .ORG 0 ;多机通讯1#分机程序/晶振4MHZ.EQU DTPIT1=$180 ;(UBRR)=12 波特率为19200(REL.ERR.=0.16%).EQU DRPNT1=$1C0STRT39: RJMP RST39 .ORG $00B RJMP UARXC ;8535UART接收完成中断 .ORG $00C RJMP UATXC ;UART发送完成中断 .ORG $011RST39: CLR R18 ;清除分机被选中(R18,6)和主机数据块接收完毕标志(R18,7) LDI R16,12 OUT UBRR,R16 ;设波特率BAUD RATE=4000000/16*(12+1)=19200 LDI R16,HIGH(DRPNT1) MOV R8,R16 LDI R16,LOW(DRPNT1) MOV R9,R16 ;r8,r9:接收数据指针(FIRST POINT TO $1C0) LDI R16,$98 ;允许UART中断接收,8位数据模式 OUT UCR,R16 SEIRXDTS: SBRS R18,6 ;主机呼号已收到(若收到,在R17中)? RJMP RXDTS OUT UDR,R17 ;返还该机号TXDON: IN R16,USR SBRS R16,5 RJMP TXDON ;该机号发送完成? LDI R16,$9C ; 允许UART中断接收,9位数据模式,TXB8=0 OUT UCR,R16 RCVBLK: SBRS R18,7 RJMP RCVBLK ;主机发来数据块已接收完毕? LDI R16,HIGH(DTPIT1) MOV R6,R16 LDI R16,LOW(DTPIT1) MOV R7,R16 ;设发送数据指针r6r7,首指$180 LDI R16,$3C ;允许UART中断发送,9位数据模式,TXB8=0 OUT UCR,R16TXDN: SBIC UCR,5 RJMP TXDN ;发送完毕? RJMP RST39 ; :UART中断接收程序UARXC: SBIC USR,4 RETI ;祯错误(主机正与其它分机进行9位数据模式通信),不予接收 IN R14,SREG ;保存当前状态 TST R18 BREQ NUMB ;(R18)=0时收到数据,只可能是机号,转去核实 PUSH R16 ;否则为主机向本分机发来数据块(9位模式,机号已符合) PUSH R26 PUSH R27 IN R17,UDR ;接收数据 MOV XH,R8 MOV XL,R9 ;取接收数据指针 ST X+,R17 ;转入RAM MOV R8,XH MOV R9,XL ;存数据指针 CPI R17,$0A ;是数据块结束符LF? BRNE RSCOM1 SBR R18,$80 ;收到完整数据块标志RSCOM1: POP R27 POP R26 POP R16DRETI: OUT SREG,R14 RETINUMB: IN R17,UDR ;取出数据 CPI R17,1 ;是1#分机?2#分机与$02比较/3#分机与$03比较. BRNE DRETI ;机号不符合,转! SBR R18,$40 ;建机号符合标志 RJMP DRETI; UART中断发送程序UATXC: PUSH R16 ;r6 r7:发送数据指针,首指$180 IN R16,SREG PUSH R16 PUSH R26 PUSH R27 MOV XH,R6 MOV XL,R7 ;取出发送指针 LD R16,X+ ;取数据,调指针 MOV R6,XH MOV R7,XL OUT UDR,R16 ;送入发送寄存器 CPI R16,$0A BRNE SDCOM CBI UCR,5 ;发送最后1个字符后,禁止发送寄存器空中断(CLR UDRIE) LDI R16,HIGH(DRPINT) MOV R8,R16 LDI R16,LOW(DRPINT) MOV R9,R16 ;接收数据指针初始化(POINT TO $1C0)SDCOM: POP R27 POP R26 POP R16 OUT SREG,R16 POP R16 RETI .DSEG .ORG $180DTPIT1:.BYTE $40 .ORG $1C0DRPNT1:.BYTE $10 ;$41 $45 $65 $73 $46 $42 $40 $6F $33 $44 $66 $5C $4D $4B $0D $0A;范例93 ;以中断方式写入EEPROM(仅对8535,8515无此功能),克服查询方式占用过多机时的缺点, ;并可在线写入 ;运作过程特点如下: ;(1)主程序初始化时设置EEPROM就绪(ready)中断使能位和中断总使能位 ;(2)在主程序中写入第一个字节,写入完成后引起就绪中断,其他写入在中断服务中完成 ;(3)本程序为一写入特例,写入地址为$100-$1FF,可作适当修改(如设块长计数器等) ;(4)为防止高优先级中断破坏写入过程,中断服务中不允许中断嵌套 ;(5)本例为简化程序只以查询写入地址循环作为背景程序,实用时可改为具体的背景序 ;(6)如能确信当前系统没有EEPROM正在写入,可删除对其进行查询部分.STWEEP: LDI R16,HIGH(ramend) OUT SPH,R16 LDI R16,LOW(ramend) OUT SPL,R16 SBI EECR,3 ;设置EEPROM就绪(ready)中断使能位 SEI ;中断总使能 RJMP SRTW .ORG $00F RJMP EEPRDY ;8535 EEPROM就绪(ready)中断向量SRTW: LDI YH,1 LDI YL 0 ;EEPROM 写入首地址:$100 LDI XL,$60 ;欲写入数据块首地址:$60 CLR XHWEEP0: SBIC EECR,1 ;当前有EEPROM写入操作,有则等待写入完成 RJMP WEEP0 RCALL WREEP ;写入第一个字节,($60)-$100,写入完成后,EEWE=0时引发EEPROM就绪中断 INC YL ;调整写入地址指针HHWEEP: TST YL BRNE HHWEEP CPI YH,2 ;写入地址达到$200后,写入完成 BRNE HHWEEP CBI EECR,3 ;禁止EEPROM就绪(ready)中断WDON: RJMP WDON ;踏步EEPRDY: IN R6,SREG PUSH R16 RCALL WREEP ;写入一个字节 INC YL BRNE WRETI INC YH ;EEPROM末地址为$1FFWRETI: POP R16 OUT SREG,R6 RETIWREEP: OUT EEARH,YH ; OUT EEARL,YL ;写入地址送入EEAR LD R16,X+ ;取数据,调指针 OUT EEDR,R16 ;数据写入EEPROM数据寄存器 SBI EECR,2 ;设置EEPROM写入总使能位EEMWE SBI EECR,1 ;设置EEPROM写入使能位EEWE RET;范例94 ;精确定时产生0.1秒信号 ;用定时/计数器1定时,不分頻定出0.1秒信号,由PC5脚输出正脉冲。 ;晶体4.000119MHZ,计400012个数定出0.1秒信号 ;对定时/计数器1重装常数进行加法补偿(扣除自然计数和补偿占用时间). ;加法补偿若产生进位,将中断次数减1 .ORG $000 ;精确定时产生0.1秒信号STRT24: RJMP RST24 .ORG $006 ;8515 t1 overflow vector RJMP T1_OVFL ;400012=65536*7-58740=7*$10000-$E574/故TCC=$E574 .ORG $00D RST24: LDI R16,HIGH(ramend) OUT SPH,R16 LDI R16,LOW(ramend) OUT SPL,R16 SBI DDRC,5 ;PC5,0.1秒号输出(高有效) CBI PORTC,5 LDI R16,1 ;不分頻 OUT TCCR1B,R16 LDI R16,$E5 OUT TCNT1H,R16 LDI R16,$74 OUT TCNT1L,R16 ;写入时间常数TCC LDI R16,$80 OUT TIMSK,R16 ;允许定时/计数器1溢出中断 LDI R16,7 ;7次中断输出0.1秒号 MOV R6,R16 SEI ;中断总使能HH1A: RJMP HH1A ;T1_OVFL:PUSH R16 PUSH R17 IN R7,SREG DEC R6 ;中断次数减一 BRNE GOON10 ;0.1秒时间到? LDI R16,7 MOV R6,R16 ;重新装入中断次数 SBI PORTC,5 ;0.1秒号输出前沿 IN R17,TCNT1L ;* IN R16,TCNT1H ;*读入TCNT1自然计数值 LDI R18,$7C ;*TCC=$E574 ADD R17,R18 ;*TCC+8=$E57C LDI R18,$E5 ;*8条单周期补偿指令占用8个时钟周期 ADC R16,R18 ;*修正后TCC=$E574+(TCNT1)+8 OUT TCNT1H,R16 ;* OUT TCNT1L,R17 ;*重新装入补偿修正后的TCC BRCC GOON09 DEC R6 ;加法补偿若产生进位,将中断次数减1GOON09: ;. ;数据处理略 ;. ;. ;. ;. RCALL ACLK1 ;0.1秒走时软时钟 RJMP GOON11GOON10: CBI PORTC,5 ;输出信号后沿GOON11: POP R17 POP R16 OUT SREG,R7RETI;范例95 ;用定时/计数器1定时,不分頻定出1秒信号,由PC5脚输出正脉冲 ;晶体4.000133MHZ,计4000133个数定出1秒信号 ;对定时/计数器1重装常数进行加法补偿(扣除自然计数和补偿占用时间). ;加法补偿若产生进位,将中断次数减1 .ORG $000 ;精确定时产生秒号 STRT25: RJMP RST25 .ORG $006 RJMP T1_OVFB ;4000133=62*65536-63099=62*$10000-$F67B/故TCC=$F67B .ORG $00D RST25: LDI R16,HIGH(ramend) OUT SPH,R16 LDI R16,LOW(ramend) OUT SPL,R16 SBI DDRC,5 ;PC5输出秒信号(正脉冲) CBI PORTC,5 LDI R16,1 ;不分頻 OUT TCCR1B,R16 LDI R16,$F6 ; OUT TCNT1H,R16 ;写入TCC高8位 LDI R16,$7B ; OUT TCNT1L,R16 ;写入TCC低8位 LDI R16,$80 ; OUT TIMSK,R16 ;允许T/C1溢出中断 LDI R16,62 ;62次中断定出秒号 MOV R6,R16 SEI ;HH1B: RJMP HH1B ;等待中断T1_OVFB:PUSH R16 PUSH R17 IN R7,SREG DEC R6 ;到62次中断? BRNE GOON12 LDI R17,62 MOV R6,R17 ;重装中断次数 SBI PORTC,5 ;输出秒信号 IN R17,TCNT1L ;* IN R16,TCNT1H ;*读入T/C1自然计数值 LDI R18,$83 ;*TCC=$F67B ADD R17,R18 ;*TCC+8=$F683 LDI R18,$F6 ;*8条单周期补偿指令占用8个时钟周期 ADC R16,R18 ;* OUT TCNT1H,R16 ;* OUT TCNT1L,R17 ;*重新装入补偿修正后的TCC BRCC GOON19 DEC R6 ;加法补偿若产生进位,将中断次数减1GOON19: ;. ;数据处理略 ;. ;. ;. ;. RJMP GOON13GOON12: CBI PORTC,5 ;秒号后沿GOON13: POP R17 POP R16 OUT SREG,R7RETI ;范例96;运作特点如下:;此程序为一完整频率测量显示程序,所测频率较高(2MHZ),使用4兆晶振;程序兼有启动看门狗及对其管理功能;以TCNT0精确定时输出秒号作为捕获信号,用TCNT1对被测信号频率计数;用TCNT0直接对(8515)4兆晶振计数产生秒号,定时精度达1Hz 主常数选为256(即0);由PA0输出精确定时产生的秒信号(与ICP脚相连)捕获TCNT1计数值,相减计算频率;将频率转换为十进制数,装入显示缓存区,调DSPA子程序显示之(参考范例27和图4-5);重装TCC时对TCC进行修正,若修正(减法)计算不产生借位,将中断次数n减1;被测频率可近2兆,故须设1字节扩展计数器,以tcnt1溢出中断对其计数(共3字节计数器);在TCNT1捕获中断服务中,以3字节减法计算频率,并置位T标志;若TCNT1溢出标志置位;必须提前增1扩展计数器,并将TCNT1溢出标志清除(不再增1扩展计数器),再计算频率.;TCNT1溢出中断优先级高于TCNT0,故TCNT1中断服务可能影响秒号精度,导致测量误差;可以排队法剔除坏值,即将几个连续采样按大小顺序排队,掐头去尾只留中间再作平均.;也可以监视LED显示,连续3秒稳定显示(高频测量允许有2Hz误差)即为所测频率正确值.;若晶振采用12兆,被测信号频率(暂空比1:1或接近1:1)可接近6兆. .ORG $000 STRT26: RJMP RST26 ;实测8515晶振频率4.000167MHZ 计4000167个数为1秒 .ORG $003 RJMP T1_CAPT ;T/C1捕获中断 .ORG $006 RJMP T1_OVRF ;T/C1溢出中断 .ORG $007 RJMP T0_OVFB ;T/C0溢出中断 .ORG $00D ;4000167=256*15626-89=256*$3D0A-89/故TCC=89 n=15626RST26: LDI R16,HIGH(ramend) OUT SPH,R16 LDI R16,LOW(ramend) OUT SPL,R16 SBI DDRA,0 ;PA0输出秒定时信号,捕获频率计数值 CBI PORTA,0 ;初始为低 CLR R22 CLR R21 CLR R20 ;R20,R21,R22为频率量瞬时计数采样 CLR R2 WDR LDI R16,$0D ;启动看门狗,溢出时间为0.49 OUT WDTCR,R16 ;写入看门狗控制寄存器 CLR XH LDI XL,$6C ;set the display buffer pointerT26LP: ST X+,R2 CPI R26,$74 BRNE T26LP ;清除$6C-$73 LDI R16,$01 ;T/C0为定时器,不分频 OUT TCCR0,R16 LDI R16,89 ; OUT TCNT0,R16 ;写TCC到TCNT0 LDI R16,$C6 ;上升沿捕获,允许噪音滤除,外部脉冲计数 OUT TCCR1B,R16 LDI R16,$8A ;允许T/C1捕获,溢出以及T/C0溢出中断 OUT TIMSK,R16 ; LDI R16,$3E ;设15626(=$3D0A)次中断(高位字节已增1) MOV R1,R16 ; MOV R19,$0A ; SEI ;HH1C: BRTS HH2C ;已采集到频率? RCALL DSPA ;仍显示原数据 RJMP HH1C HH2C: CLT ;频率量已在R3,R4,R5 MOV R9,R3 MOV R10,R4 MOV R11,R5 RCALL CONV1 ;翻为十进制数(R12R13R14R15252 253 254 255 | 0 1 2 3 4 5.加法计数方向-GOON13: POP R16 ; | | | | | | | | | | | OUT SREG,R8 ;| RETIT1_OVRF:IN R18,SREG ;TCNT1溢出中断服务 INC R3 ;R3为TCNT1扩展字节 OUT SREG,R18 RETIT1_CAPT:IN R6,SREG ;T/C1捕获中断 PUSH R16 IN R5,ICR1L IN R4,ICR1H MOV R16,R22 MOV R22,R5 SUB R5,R16 MOV R16,R21 MOV R21,R4 ;与上一次采集的频率量相减,得到频率值 SBC R4,R16 IN R16,TIFR SBRS R16,7 RJMP T1CP1 INC R3 ;8515TCNT1溢出中断,预先对扩展字节计数 LDI R16,$80 ;并将溢出标志清除,(中断返回后不再计数) OUT TIFR,R16 ;清除TIFR,7T1CP1: MOV R16,R20 MOV R20,R3 SBC R3,R16 ;采集频率量在R3,R4,R5 SET ;建采集频率量标志 POP R16 OUT SREG,R6 RETI;范例97 ; 本时基资源共享式综合测量系统,具有精确定时PWM输出、输入捕获测外部信号;周期、获取TCNT1溢出中断信号等多种功能。特点是TCNT1启动之后即不停运行。; 时基资源共享式PWM的特点在于装入比较匹配寄存器之数据方式,它不是在比较;匹配达到时清除定时/计数器,再装入高(或低)电平时间常数:而是当比较匹配;达到时以定时/计数器当前值加上时间常数后将和装入比较匹配寄存器,二者效果;是相同的。可称前者为静态设置,后者为动态设置。后者因不停运行定时/计数器;,其资源可同时用于输出比较匹配A及B、输入捕获、定时信号输出等等。; 本程序使用晶体标称值4MHZ实测为4,000,236HZ。使用定时/计数器1直接;对主频精确定时设定PWM高低电平的维持时间。以ICP脚输入被测周期脉冲信号。; 本程序PWM之暂空比与范例51相同,为5毫秒(高):10毫秒。故维持;高电平的时间常数为4,000,236200=20,001,维持低电平的时间常数为;4,000,236100=40,002。此即输出比较匹配A达到时交替写入比较匹配寄;存器OCR1A之对TCNT1当前内容的超前值。; 因以TCNT1直接对主频计数,频率高周期短,输入捕获的外部信号周期不能;大于655364,000,236=0.01638(秒)即16.38毫秒(但也不能太小,对频率;较高的脉冲信号应改为测频率)。以相邻两次捕获值相减之差除以主频得到被测信;号之周期(单位为秒)。; 为避免小数除法运算,可将相邻两次捕获值相减之差先乘以1,000,再将乘积;除以主频,将得到以毫秒为单位的周期值;考虑到除法子程序DIV16只实现整数;除法,且除数不能大于65535,可将主频缩小100倍,即以40,002作除数,故;除得之商扩大了100倍。这样将整数商二翻十后,其末两位皆为小数。本程序采用;这种计算方法。并在主循环程序中调DSPA子程序显示所测周期值。; 若将以上算法中乘以1,000改为乘以10,000,并增加对商的万位转换,;其余保留不变,则所得商数末3位皆为小数位。本算法精度高于上一种方法,如有;提高测量精度之必要,应采用后种算法。; 若扩大测量信号周期,应对TCNT1溢出信号计数,做3字节减法(见范例96);后再计算被测信号周期(除以4,000,236)。所测信号周期可达4.194秒。; 本示例定时精度可与范例51做如下比较:本例中高低电平分别对主频计数;20,001个和40,002个。范例51中高低电平分别对主频计数19,968个和;40,000个。本示例定时精度明显高于范例51。; 本示例TCNT1产生溢出中断之周期为16.38毫秒,其频率约为61HZ。在TCNT1;溢出中断服务子程序中由PA3以正脉冲形式输出该信号。 .ORG $000 ;USE 8535STRT43: RJMP RST43 ;5.0000MS(高):9.9999MS(低) 晶振4,OOO,236HZ .ORG $005 RJMP T1_CP43 ;T/C1输入捕获中断 .ORG $006 RJMP T1_CA43 ;T/C1输出比较匹配A中断 .ORG $008 RJMP T1_OV43 ;TCNT1溢出中断 .ORG $011RST43: LDI R16,HIGH(RAMEND) OUT SPH,R16 LDI R16,LOW(RAMEND) OUT SPL,R16 LDI R16,$80 ;T/C1比较匹配A达到时,清除输出脚OC1A OUT TCCR1A,R16 LDI R16,$41 ;不分频,比较匹配达到不清TCNT1;上升沿捕获/禁止噪音滤除 OUT TCCR1B,R16 SBI DDRD,5 SBI PORTD,5 ;PD5(OC1A)初始化输出为高 SBI DDRA,3 ;PA3为TCNT1溢出中断信号输出 CBI PORTA,3 ;PA3输出为低 LDI R16,$4E OUT OCR1AH,R16 LDI R16,$21 ;写比较匹配寄存器($4E21=20001脉宽5毫秒) OUT OCR1AL,R16 LDI R16,$34 ;允许输入捕获/输出比较匹配A/TCNT1溢出中断 OUT TIMSK,R16 CLR R21 CLR R20 ;捕获值暂存单元 CLR XH LDI XL,$6CCLR43: ST X+,R20 CPI XL,$74 BRNE CLR43 ;清除显示区$6C-$73 SEIHH43: RCALL DSPA ;背景程序:显示捕获频率信号之周期,单位:毫秒 BRTC HH43 RCALL FIL2 ;T=1,已捕获到数据在R4,R5/先关显示 CLT MOV R14,R4 MOV R15,R5 LDI R16,3 MOV R12,R16 LDI R16,$E8 ;取立即数1000(=$3E8) MOV R13,R16 RCALL MUL16 ;乘以1000 LDI R16,$9C ;使周期单位为毫秒 MOV R10,R16 LDI R16,$42 ;$9C42=40002 MOV R11,R16 RCALL DIV16 ;除以立即数40002,得到被测脉冲周期之单位为毫秒,且含因子100 MOV R16,R14 MOV R17,R15 LDI R18,3 LDI R19,$E8 RCALL CONVT ;二翻十,得千位 STS $70,R11 ;送入显示区 CLR R18 LDI R19,$64 RCALL CONVT ;二翻十,得百位 LDI R19,-$29 ;在百位处加小数点(百位实为个位) SUB R11,R19 STS $71,R11 ;送入显示区 LDI R19,10 RCALL CONVT ;二翻十,得十位 STS $72,R11 STS $73,R17 ;小数送入显示区 RJMP HH43 ;转去显示新采样数据CONVT: CLR R11COVLOP:SUB R17,R19 SBC R16,R18 ;减去十进制数某位之权 BRCS CONVCM INC R11 ;够减,增权 RJMP COVLOPCONVCM:ADD R17,R19 ;否则恢复余数 ADC R16,R18 RETT1_CA43:SEI IN R1,SREG IN R24,TCCR1A SBRS R24,6 RJMP OUTLW ;当前输出低电平,转 IN R24,OCR1AL IN R25,OCR1AH SUBI R24,$DF ;LOW(-20001) SBCI R25,$B1 ;HIGH(-20001)/$B1DF为20,001之补码 OUT OCR1AH,R25 OUT OCR1AL,R24 ;写入高电平维持时间超前值 LDI R24,$80 ;比较匹配A达到时,OC1A输出为低 OUT TCCR1A,R24 OUT SREG,R1 RETIOUTLW: IN R24,OCR1AL IN R25,OCR1AH SUBI R24,$BE ;LOW(-40002) SBCI R25,$63 ;HIGH(-40002)/$63BE为40,002之补码 OUT OCR1AH,R25 ; OUT OCR1AL,R24 ;写入低电平维持时间超前值 LDI R24,$C0 ;比较匹配A达到时,OC1A输出为高 OUT TCCR1A,R24 OUT SREG,R1 RETIT1_CP43:IN R3,SREG ;T/C1捕获中断 IN R5,ICR1L IN R4,ICR1H MOV R17,R21 MOV R21,R5 SUB R5,R17 MOV R17,R20 MOV R20,R4 ;与上一次采集的频率量相减,得到频率值 SBC R4,R17 ;在R4,R5中 SET ;建采集频
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 下城区营销方案设计公司
- 电池及电池系统维修保养师适应性考核试卷及答案
- 聚甲基丙烯酸甲酯(PMMA)装置操作工岗位操作技能考核试卷及答案
- 刨花板工技术考核试卷及答案
- 果蔬汁无菌包装市场需求预测分析报告
- 鸿基岸芷汀兰营销方案
- 村级事务管理汇报
- 企业培训咨询加盟方案
- 施工方案是哪个单位出具
- 活动现场咨询答疑方案
- 申请增列护理学硕士专业学位授权点的必要性与可行性论证报告
- 2024广西公需课高质量共建“一带一路”谱写人类命运共同体新篇章答案
- 《中级财务会计》课件-11收入、费用和利润
- DG-TJ08-2461-2024 旧住房更新改造查勘标准
- 耳鸣的健康教育
- 小学食堂从业培训
- 2025届云南中考道德与法治真题试卷【含答案】
- 尿毒症并发心衰的护理
- 财务给研发培训课件
- 2025年中国底部填充胶粘剂市场调查研究报告
- 个人防护与手卫生规范
评论
0/150
提交评论