avr单片机汇编参考程序

发布者:Jikai最新更新时间:2019-11-14 来源: 51hei关键字:avr  单片机  汇编 手机看文章 扫描二维码
随时随地手机看文章

该AVR的汇编程序选自《M128》,程序中体现了AVR汇编的基本特点,仅供大家参考。

该应用系统为一个带1/100秒的简易24小时制时钟,它在上电后能够自动从11时59分55秒00开始计时和显示时间。下图为简易时钟系统硬件电路图



                           图  简易24小时时钟硬件原理图

系统使用8个LED数码管显示时、分、秒、1/100秒4个时段的数字,每个时段占用2个LED。显示方式采用动态扫描方式,ATmega128的PA口输出显示数字的7段码(注意:图中省缺了PA口连接到LED各段的8个限流电阻,阻值800欧左右),PC口用于控制8个LED的位选。ATmega128使用外部16MHz晶振(图中未画出)。

系统还使用ATmega128片内的计数/定时器T1,设计T1工作在定时溢出中断方式,定时间隔为2ms,即T1每2ms产生一次中断。5次中断得到10ms的时间间隔,此时时钟的1/100秒加1,并相应进行时、分、秒的调整。

LED动态扫描方式的设计如下:在每2ms的时间中,点亮8个LED中的一个,显示其相应的数字(PC口的输出只有一位为低电平,选通一个LED,保持2ms)。因此PC口的输出值为0b11111110,每隔2ms循环右移,到0b01111111时8个LED各点亮一次,时间为16ms。在1秒钟内,循环8个LED的次数为62.5(1000/16),是人眼的滞留时间(25次/秒)的2.5倍,保证了LED显示亮度均匀,无闪烁。在程序设计中,在各个LED转换和7段码输出时,关闭位选信号(PC输出0b11111111),消除了显示的拖尾现象(消影功能)。

T1的设计:T1为16位定时器,系统时钟为16M,采用其64分频后的时钟作为T1的计数信号(寄存器TCCR1B = 0x03),一个计数周期为4us,2ms需要计500个(0x01F4)。由于T1溢出中断发生在0xFFFF后下一个T1计数脉冲的到来(参见第二章关于定时器原理部分),因此T1的计数初始值为0xFE0C = 0xFFFF – 0x01F3(65535-499),即寄存器TCNT1的初值为0xFE0C。


3.8.2  AVR汇编源代码

  该系统的汇编源代码如下,开发软件平台使用AVR Studio 4.08。


;********************************************************


;AVR汇编程序实例


;简易带1/100秒的24小时制时钟


;********************************************************


.include "m128def.inc"                ;引用器件I/O配置文件




;定义程序中使用的变量名(在寄存器空间)


.def count                =        r18        ;循环计数单元


.def position                =        r19        ;LED显示位指针,取值为0-7


.def p_temp                 =        r20        ;LED显示位选,其值取反由PC口输出


.def count_10ms        =        r21                ;10ms计数单元


.def flag_2ms                =        r22        ;2ms到标志


.def temp                        =        r23        ;临时变量


.def temp1                =        r24                ;临时变量


.def temp_int                =        r25        ;临时变量(中断中使用)




;中断向量区定义,flash空间$0000-$0045


.org $0000


        jmp reset                ;复位处理


        reti                        ;IRQ0 Handler


        nop


        reti                        ;IRQ1 Handler


        nop


        reti                        ;IRQ2 Handler


        nop


        reti                        ;IRQ3 Handler


        nop


        reti                        ;IRQ4 Handler


        nop


        reti                        ;IRQ5 Handler


        nop


        reti                        ;IRQ6 Handler


        nop


        reti                        ;IRQ7 Handler


        nop


        reti                        ;Timer2 Compare Handler


        nop


        reti                        ;Timer2 Overflow Handler


        nop


        reti                        ;Timer1 Capture Handler


        nop


        reti                        ;Timer1 CompareA Handler


        nop


        reti                        ;Timer1 CompareB Handler


        nop


        jmp time1_ovf ;Timer1 Overflow Handler


        reti                        ;Timer0 Compare Handler


        nop


        reti                        ;Timer0 Overflow Handler


        nop


        reti                        ;SPI Transfer Complete Handler


        nop


        reti                        ;USART0 RX Complete Handler


        nop


        reti                        ;USART0 UDR Empty Handler


        nop


        reti                        ;USART0 TX Complete Handler


        nop


        reti                        ;ADC Conversion Complete Handler


        nop


        reti                        ;E2PROM Ready Handler


        nop


        reti                        ;Analog Comparator Handler


        nop


        reti                        ;Timer1 CompareC Handler


        nop


        reti                        ;Timer3 Capture Handler


        nop


        reti                        ;Timer3 CompareA Handler


        nop


        reti                        ;Timer3 CompareB Handler


        nop


        reti                        ;Timer3 CompareC Handler


        nop


        reti                        ;Timer Overflow Handler


        nop


        reti                        ;USART1 RX Complete Handler


        nop


        reti                          ;USART1 UDR Empty Handler


        nop


        reti                        ;USART1 TX Complete Handler


        nop


        reti                        ;Two-wire Serial Interface Handler


        nop


        reti                        ;SPM Ready Handler


        nop                




;程序开始


.org $0046


reset: 


        ldi r16,high(RAMEND)                ;设置堆栈指针高位


        out sph,r16


        ldi r16,low(RAMEND)                ;设置堆栈指针低位


        out spl,r16


        


        ser temp                        


        out ddra,temp                                ;设置PORTA为输出,段码输出


        out ddrc,temp                                ;设置PORTC为输出,位码控制


        out portc,temp                        ;PORTC输出$FF, 无显示




        ldi position,0x00                        ;段位初始化为1/100秒低位


        ldi p_temp,0x01                        ;LED第1位亮




;初始化时钟时间为11:59:55:00


        ldi xl,low(time_buff)                ;


        ldi xh,high(time_buff)                ;X寄存器取得时钟单元首指针


        ldi temp,0x00


        st  x+,temp                                ;1/100秒 = 00

[1] [2] [3]
关键字:avr  单片机  汇编 引用地址:avr单片机汇编参考程序

上一篇:AVR单片机一些学习笔记
下一篇:AVR的指令与汇编器系统及宏指令

推荐阅读最新更新时间:2024-11-17 13:12

基于单片机与SPWM控制的应急电源逆变电路设计
摘要:逆变器是应急电源的重要组成部分。为了实现应急电源中逆变器输出交流电压的适时调节,减小输出电压谐波达到逆变电路数字化控制目的,三相逆变电路采用了正弦脉宽调制(SPWM)控制方法,以C8051F020单片机和SA4828为核心,完成对SPWM波的产生及系统的控制。利用单片机特有的端口连接完成外围控制功能,这样就减少了应急电源对波形产生的处理时间,保证波形具有较高精度,而且电路硬件连接简单。 关键词:应急电源;逆变控制器;C8051F020;SPWM 0 引言     随着社会发展,越是信息化、现代化,就越依赖于电力,突然断电会给人们正常的生活秩序和学习带来影响,尤其对于生产、生活中特别重要的负荷,一旦中断供电,将会造成重大的经济损
[电源管理]
基于<font color='red'>单片机</font>与SPWM控制的应急电源逆变电路设计
单片机控制技术发展与应用
1 单片机技术的发展特点 自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发 展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发 展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。 单片机长寿命 这里所说的长寿命,一方面指用单片机开发的产品可以稳定可靠地工作 十年、二十年,另一方面是指与微处理器相比的长寿命。随着半导体技术的飞速发展, MPU更新换代的速度越来越快,以386、486、586为代表的MPU,很短的时间内就被淘汰出 局,而传统的单片机如68HC05、8051等年龄已有15岁,产量仍是上升的。这一方面是由 于其对相应应用领域的适应性,另一方面是
[单片机]
单片机在波特率变换器中的应用
在一些复杂的系统中,系统与分系统、分系统与设备等之间存在数据的传递问题,往往采用通信的方式来解决。由于分系统、没备等通信波特率的不同,特别是一些特殊波特率设备的存在,使得系统中设备间的相互通信不易实现。例如,在一个系统中,上位机接收某一设备的数据,如图1所示,设备l和设备2采用的是172.8 kbps的波特率,而上位机用VB编程,其通信波特率为115.2 kbps、128 kbps或256 kbps,等,这样设备之间就不能相互通信,给设计带来困难。为了解决上述问题,采用双单片机电路,设计了波特率变换器,将接收波特率为172.8 kbps的数据,转换成波特率为115.2 kbps的输出,从而使不同波特率设备之间的通信成为可能。
[单片机]
ST发布低成本嵌入式闪存微控制器STR910F
5月2日讯,ST发布通用闪存微控制器系列:STR910F,组合了以太网连接功能、ARM9E处理器核与大容量嵌入式SRAM及闪存。STR910F系列为基于ARM的闪存MCU设置了新的性/价与连接功能标准,为系统设计人员在低成本LAN或网络节点中转入强大的嵌入式控制应用带来了众多新的可能。 STR910F系列专为满足高性能嵌入式控制应用不断增长的需求开发,支持以太网连接功能。这些器件是ST基于ARM7TDMI MCU的STR7XX系列的扩充。销售点终端与外设、自动贩卖机、工业控制与工厂自动化、串行协议网关、楼宇设备自动化、安全与监视、便携式仪表等应用对性能与网络连接功能的需要越来越高。此外,这些应用也需要更大容量的嵌入式程
[新品]
基于单片机PIC18F66J10的主动放线机设计
0 引言 速度是工业生产中的主要被控参数之一,与之相关的各种速度控制系统已被广泛应用于冶金、化工、机械、食品等领域。本文介绍的主动放线机速度自动控制系统适用于微细金属线的恒张力主动放线,可广泛用于拉丝机、绕线机的前端放线,并可在放线过程中保持金属线的张力恒定。适用的线材有金、银、铜、铝等,放线速度为0~700 rpm,线径可达φ0.05 mm,张力控制可通过摆臂一边悬挂的砝码来手动调整。 整个系统选用六线式单极性步进电机为执行部件,具有低成本和控制方法简单的优点,核心控制芯片选用美国Microchip公司的PIC单片机PIC18F66J10,该芯片具有实用可靠、代码保密性好、片内集成有模拟、数字功能部件等优点。而系统选用美国A
[单片机]
浅析实现MCU低功耗的三种途径
  现在的电子产品,对低功耗的要求越来越高。产品功耗的问题是经常让产品设计者头痛而又不得不面对的一个问题。以单片机为核心的系统,其功耗主要由单片机功耗和单片机外围电路功耗组成。要满足单片机系统的低功耗要求,选用具有低功耗特性的单片机可以很容易实现。因为具有低功耗特性的单片机可以大大降低系统功耗,这可以从单片机的供电电压、内部结构、系统时钟和低功耗模式等几方面来考察一款单片机的低功耗特性。 为了让控制器的耗电量达到最低。达成的方式大概有以下三种:降低工作模式时的功秏、减少休眠模式的功秏、以及缩短由休眠到工作的唤醒时间。   工作模式时的功秏减低是最先被克服的任务,目前推出低功秏 MCU 的厂商多半已经做到。其中最大眉角在于,必须利用
[电源管理]
多模式51单片机心形流水灯+呼吸灯+蜂鸣器音乐
1.基础硬件DIY设计 电路硬件: STC89C52RC 蜂鸣器/24个LED/4个四角按键 1)整体原理图 2)PCB电路 3)3D_PCB TOP层 2.单片机程序设计 1)呼吸灯 //呼吸灯 while(1) { for(high=1;high cycle;high++) { P2=P1=P0=0XFF; delay2(high); P2=P1=P0=0X00; low=cycle-high; delay2(low); } for(low=1;low cycle;low++) { P2=P1=P0=0XFF;; high=cycle-low;
[单片机]
多模式51<font color='red'>单片机</font>心形流水灯+呼吸灯+蜂鸣器音乐
PIC16F628单片机构成PVS控制系统
本文以利用PIC16F628单片机构成PVS控制系统为例,从硬件系统设计和软件系统设计入手,给出了印制电路板图、电路原理图。   硬件系统设计   该PVS控制系统以PIC16F628单片机为核心,由PIC16F628单片机及其外围元器件、电源模块、继电器模块组成,印制电路板和电路原理图如图1、图2所示。      图1 印制电路板      图2 原理图 PIC16F628单片机及其外围元器件   PIC16F628单片机是由Microchip公司生产的PIC系列8位CMOS闪存单片机之一,该系列单片机采用RISC(Reduced Instruction Set Computer)嵌入式结构,
[模拟电子]
PIC16F628<font color='red'>单片机</font>构成PVS控制系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved