⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compare.asm

📁 单片机红外通讯控制 C语言编写 源程序。
💻 ASM
字号:
;********************************************************************************
;*                                                                              *
;*    File       : 实验板compare.asm                                            *
;*    Function   : 模拟比较器练习                                               *
;*    Date       : 2006-05-07                                                   *
;*    Version    : 1.0                                                          *
;*                                                                              *
;*    Author     : 开关电源              hongtusy@163.com                       *
;*    Company    : 电子信息技术咨询网    http://www.itsn.cn                     *
;*                                                                              *
;****************************描述与记事******************************************
;实验板的AVR程序,调节电位器,使模拟比较器输出反转,用LED指示输出结果。
;接线定义:PC(SW1-1~8)LED数据端  PB3-AIN1输入端(SW3-3) PB2-AIN0输入端(SW3-4)
;          SW3-8为系统复位端,SW5-7为蜂鸣器输出端,SW6-1为LED公共地。
;记事:本程序旨在对模拟比较器的理解与演示,程序适合初学者使用。
;提示:当AIN0上的电压高于AIN1上的电压时,比较器输出ACO置位。
;具体电路可参照使用指南里的说明。
;使用器件:ATMEGA8535,可更换。          使用默认的片内RC振荡器,1MHz。
;********************************************************************************
.include "8535def.inc"                      ;定义头文件。
.org        0x0000                          ;指定开始地址。
            rjmp       reset                ;转移到“RESET”句。
.org        0x10 
reset:      ldi        r16,0x02             ;设置堆栈指针0x025f
            out        sph,r16
			ldi        r16,0x5f
			out        spl,r16
         ;**************
			ldi        r16,0x00 ;口设置实际对比较的功能没有影响,但是设置了输出和内部上拉后,
			out        ddrb,r16 ;电位器的电压就改变了。因此我们设置为输入和不加上拉,这样电位器的电压没有被改变。
			ldi        r16,0x00 
			out        portb,r16

			ldi        r16,0xff
			out        ddrc,r16             ;PC为输出
            out        ddra,r16
			out        porta,r16            ;蜂鸣器关闭
			ldi        r16,0x00
			out        portc,r16            ;PC口的LED关闭
			;--------------------
			ldi        r16,0x00             ;模拟比较器使能
			out        acsr,r16
           ;刚上电,先闪烁3次。
		    rcall      ledout
            rcall      ledout
			rcall      ledout
;%%%%%%%%%输入检测%%%%%%%,此时调节电位器VR2,可以使比较器反转,可以听到报警声,LED开始闪烁,需要反跳即可静止。
loop:       in         r21,acsr
            sbrc       r21,5                ;位ACO为0跳行语句
            rcall      ledout               ;若该位为1(比较器没动作)就跳过该行,若感应到了就输出。
			rjmp       loop    
			
			
;-------------LED闪烁/蜂鸣器响程序------------------			   
ledout:     ldi        r17,0xff             ;点亮发光管
            out        portc,r17            ;输出端口,数据输出,
			out        porta,r17            ;蜂鸣器关闭
	     	rcall      londel               ;延迟
			ldi        r17,0x00             ;关闭输出
			out        portc,r17
            out        porta,r17            ;蜂鸣器响
			rcall      londel               ;延迟
			ldi        r17,0xff
			out        porta,r17            ;蜂鸣器关闭
			ret
;#################短延迟程序##################
del:        ldi        r18,0x8F    
loop1:      dec        r18              
            brne       loop1       
			nop
			ret
;###################钳套的延迟程序################
londel:     ldi        r19,0xff
loop2:      rcall      del
            rcall      del
            dec        r19
			brne       loop2
            ret
;##################end###############

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -