当前位置:首页 > 单片机 > 单片机
[导读] ;********************************************************;AVR汇编程序实例 简易带1/100秒的24小时制时钟;简易带1/100秒的24小时制时钟;MEGA16 4MHz;*********************************************

;********************************************************
;AVR汇编程序实例 简易带1/10024小时制时钟
;简易带1/100秒的24小时制时钟
;MEGA16 4MHz
;********************************************************


.include "m16de.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 int = r25 ;临时变量(中断中使用)

;中断向量区定义,flash空间$0000-$0045
.org $000
rjmp reset ;复位处理
nop
reti ;INT0 Handler
nop
reti ;INT1 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
rjmp time1_ovf ;Timer1 Overflow Handler
nop
reti ;Timer0 Overflow Handler
nop
reti ;SPI Transfer Complete Handler
nop
reti ;USART RX Complete Handler
nop
reti ;USART UDR Empty Handler
nop
reti ;USART TX Complete Handler
nop
reti ;ADC Conversion Complete Handler
nop
reti ;E2PROM Ready Handler
nop
reti ;Analog Comparator Handler
nop
reti ;Two-wire Serial Interface Handler
nop
reti ;INT2 Handler
nop
reti ;Timer0 Comp Handler
nop
reti ;SPM Ready Handler
nop

;程序开始
.org $02A
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
ldi temp,55
st x+,temp ;秒 = 55
ldi temp,59
st x+,temp ;分 = 59
ldi temp,11
st x,temp ;时 = 11

ldi temp,0xff ;T1初始化,每隔2ms中断一次
out tcnt1h,temp
ldi temp,0x83
out tcnt1l,temp
clr temp
out tCCr1a,temp
ldi temp,0x03 ;16M,64分频2ms
out tccr1b,temp
ldi temp,0x04
out timsk,temp ;允许T1溢出中断
sei ;全局中断允许

;主程序
main:
cpi flag_2ms,0x01 ;判2ms到否
brne main ;No,转main循环
clr flag_2ms ;到,请2ms标志
rcall display ;调用LED显示时间(动态扫描显示一位)
d_10ms_ok:
cpi count_10ms,0x05 ;判10ms到否
brne main ;No,转main循环
clr count_10ms ;10ms到,清零10ms计数器
rcall time_add ;调用时间加10ms调整
rcall put_t2d ;将新时间值放入显示缓冲单元
rjmp main ;转main循环

;LED动态扫描显示子程序,2ms执行一次,一次点亮一位,8位循环
display:
clr r0
ser temp ;temp = 0x11111111
out portc,temp ;关显示,去消影和拖尾作用
ldi yl,low(display_buff)
ldi yh,high(display_buff) ;Y寄存器取得显示缓冲单元首指针
add yl,position ;加上要显示的位值
adc yh,r0 ;加上低位进位
ld temp,y ;temp中为要显示的数字

clr r0
ldi zl,low(led_7 * 2)
ldi zh,high(led_7 * 2) ;Z寄存器取得7段码组的首指针
add zl,temp ;加上要显示的数字
adc zh,r0 ;加上低位进位
lpm ;读对应七段码到R0中
out porta,r0 ;LED段码输出

mov r0,p_temp
com r0,
out portc,r0 ;输出位控制字,完成LED一位的显示

inc position ;调整到下一次显示位
lsl p_temp
cpi position,0x08
brne display_ret
ldi position,0x00
ldi p_temp,0x01
display_ret:
ret

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

香港2022年7月7日 /美通社/ -- 寿康集团有限公司(“寿康集团”或“本公司”及其附属公司,统称“本集团”;股份代号:0575.HK)旗下全资附属公司、并以香港为基地的人工智能创新公司及衰老与长寿深层生物...

关键字: 时钟 VI GE EV

文章转自知乎[MIPI自学笔记],作者IEEE1364https://zhuanlan.zhihu.com/p/926820471 MIPI概述MIPI是MobileIndustryProcessorInterface的...

关键字: MIPI LAN 数据流 时钟

1、为设计执行综合时使用的各种设计约束是什么?1.1、创建时钟(频率、占空比)。1.2、定义输入端口的transition-time要求1.3、指定输出端口的负载值1.4、对于输入和输出,指定延迟值(输入延迟和输出延迟)...

关键字: 数字芯片 时钟 WIRE CK

如今,SoCs正变得越来越复杂,数据经常从一个时钟域传输到另一个时钟域。上图信号A由C1时钟域触发,被C2时钟域采样。根据这两个时钟之间的关系,在将数据从源时钟传输到目标时钟时,可能会出现不同类型的问题,并且这些问题的解...

关键字: 时钟 触发器 同步器 SETUP

本文主要介绍各种类型的跨时钟域问题。同步时钟是指具有已知相位和频率关系的时钟。这些时钟本质上是来自同一时钟源。根据相位和频率关系,可分为以下几类:具有相同频率和零相位差的时钟具有相同频率和固定相位差的时钟具有不同频率和可...

关键字: 异步 时钟 相位差 SETUP

跨时钟域验证可分为结构验证和功能验证两类。结构验证确保在需要的地方添加了适当的同步逻辑。功能验证确保已添加的逻辑实现了预期的功能。仅通过执行结构验证,就可以检测到许多CDC问题。这些检查比功能验证更简单、更快。因此,验证...

关键字: 时钟 数据传输 信号 TE

来源:射频百花谭规范很重要工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的。逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再看自己写的...

关键字: VERILOG 时钟 计数器 仿真验证

中断服务程序

关键字: 时钟 中断程序

首先通过按“校时、校分、校星期”等按键,校对好时间。 先检查时钟显示是否当前时间一致,如需重新校准,在按住“时钟”键的同时,分别按住“校星期”、“校时”、“校分”键,将时钟调到当前准确时间。

关键字: 自动开关定时器 时钟

出品21ic论坛qbwww网站:bbs.21ic.com做一个桌面时钟大家好,我是qbwww,今天我们来做一个桌面时钟。淘宝买的套件。首先呢,我们先看一下原理图,简单的了解一下连线方式。简单的了解了一下连线的方式呢,我们...

关键字: 时钟
关闭
关闭