搜索
bottom↓
回复: 2

也是关天AVR定时器的问题---ATmega88的定时器T/C1

[复制链接]

出0入0汤圆

发表于 2007-8-28 18:46:51 | 显示全部楼层 |阅读模式
.include "m88def.inc"

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

.def temp       = r19   ;临时变量  

.def temp1      = r20   ;临时变量

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



.CSEG

.ORG $000

            RJMP RESET

.ORG $00B

        RJMP TIM1_COMPA

.ORG $01A

RESET:  LDI R16,0x02;HIGH(RAMEND)   ;设置堆栈

        OUT SPH,R16

                LDI R16,0xFF;LOW(RAMEND)

                OUT SPL,R16

        

WDT_OFF:LDI TEMP,(0<<WDRF)

        OUT MCUSR,TEMP

                LDI TEMP,(1<<WDCE)|(1<<WDE)

                STS WDTCSR,TEMP

                LDI TEMP,(0<<WDE)

                STS WDTCSR,TEMP



MOVE_INTERRUPTS:

                LDI TEMP,(1<<IVCE)

                OUT MCUCR,TEMP

                LDI TEMP,(1<<IVSEL)

                OUT MCUCR,TEMP

   

RE:                SBIS PIND,5

                RJMP LOOP1

                SBIS PIND,6

                RJMP LOOP2

                SBIS PIND,7

                RJMP LOOP3

                SBIS PINB,0

                RJMP LOOP4

                SBIS PINB,1

                RJMP LOOP5

                SBIS PINB,2

                RJMP LOOP6

                SBIS PINB,3

                RJMP LOOP7

                SBIS PINB,4

                RJMP LOOP8

                SBIS PINB,5

                RJMP LOOP9

                SBIS PINC,0

                RJMP LOOP10

                SBIS PINC,1

                RJMP LOOP11

                SBIS PINC,2

                RJMP LOOP12

                SBIS PINC,3

                RJMP LOOP13

                SBIS PINC,4

                RJMP LOOP14

                SBIS PINC,5

                RJMP LOOP15

                RJMP RE                          

;主程序

MAIN:                   CLI

                CLR TEMP1

                LDI TEMP,0x01       

                STS OCR1AH,TEMP

                LDI TEMP,0x86

                STS OCR1AL,TEMP

                CLR TEMP

                STS TCCR1A,TEMP

                LDI TEMP,0x0D

                STS TCCR1B,TEMP       ;分频比1/1024

                LDI TEMP,0x02

                STS TIMSK1,TEMP

                     SEI

               

                   SBI DDRD,4

                   SBI PORTD,4     我完成的是一个15个按键的LED灯的闪烁,按键1闪烁一下;

LED1:              CPI TEMP1,0x02    依此类推,亮200ms,灭300ms

                   BRNE LED1      ;问题就出在这里啊,就在这里等待延时的时候程序总是复位

                CBI PORTD,4       不知是什么原因啦

LED0:   CPI TEMP1,0x05

        BRNE LED0               

                DEC COUNT

                BRMI RE

                RJMP MAIN

                                       

LOOP1:  LDI COUNT,0

                RJMP MAIN

LOOP2:  LDI COUNT,1

                RJMP MAIN

LOOP3:        LDI COUNT,2

                RJMP MAIN

LOOP4:        LDI COUNT,3

                RJMP MAIN

LOOP5:        LDI COUNT,4

                RJMP MAIN

LOOP6:        LDI COUNT,5

                RJMP MAIN

LOOP7:        LDI COUNT,6

                RJMP MAIN       

LOOP8:        LDI COUNT,7

                RJMP MAIN

LOOP9:        LDI COUNT,8

                RJMP MAIN

LOOP10:        LDI COUNT,9

                RJMP MAIN

LOOP11:        LDI COUNT,10

                RJMP MAIN

LOOP12:        LDI COUNT,11

                RJMP MAIN

LOOP13:        LDI COUNT,12

                RJMP MAIN

LOOP14:        LDI COUNT,13

                RJMP MAIN

LOOP15:        LDI COUNT,14

                RJMP MAIN





;T1时钟中断服务

TIM1_COMPA:

        in temp_int,sreg  

        push temp_int           ;保护状态寄存器  

     

        ldi r16,0x00          ;T1初始值设定,100ms中断一次  

        ldi r17,0x00

        sts tcnt1h,r17  

        sts tcnt1l,r16  

     

        inc temp1           ;100ms计数器加一  

  

        pop temp_int  

        out sreg,temp_int     ;恢复状态寄存器  

        reti                     ;中断返回



用的是M88的定时器1的CTC模式,问题就是上面写的那一步啊,不知什么原因总是到那一步就复位啊,期望马老师指导一下

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2007-8-28 18:51:10 | 显示全部楼层
还补充一下:JTAGICEmkII 的在线调试debug wire 方式,不知与这有没有关系啊

出0入0汤圆

 楼主| 发表于 2007-8-29 11:38:54 | 显示全部楼层
不好意思,大家,这个问题解决了,是看门狗造成的复位。



在等待延时的时候可以用WDR复位看门狗计数器,也可以在熔丝位设定时禁止看门狗!



多谢大家关心!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 02:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表