?? timer.lis
字號:
.module Timer.C
.area text(rom, con, rel)
0000 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
.area data(ram, con, rel)
0000 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
0000 _CurSongTim::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
0003 .dbsym e CurSongTim _CurSongTim A[3:3]c
0003 _TotalSongTim::
0003 .blkb 2
.area idata
0003 0000 .byte 0,0
.area data(ram, con, rel)
0005 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
0005 .blkb 2
.area idata
0005 0000 .byte 0,0
.area data(ram, con, rel)
0007 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
0007 .dbsym e TotalSongTim _TotalSongTim A[4:4]c
.area text(rom, con, rel)
0000 .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
0000 .dbfunc e timer0_init _timer0_init fV
.even
0000 _timer0_init::
0000 .dbline -1
0000 .dbline 18
0000 ; //TIMER0 initialize - prescale:8
0000 ; // WGM: Normal
0000 ; // desired value: 10KHz
0000 ; // actual value: 10.000KHz (0.0%)
0000 ; # include "iom16v.h"
0000 ; # include "LCDFun.h"
0000 ; # include "macros.h"
0000 ;
0000 ; extern void DisplayNumChar(unsigned char l,unsigned char h,unsigned char ll,unsigned char ShowBit);
0000 ; extern void PrintOneASCII(uchar h,uchar l,uchar Asc);
0000 ; extern unsigned char SWRecordLyric,SWPlayTime; //歌詞開關(guān),時間開關(guān)
0000 ;
0000 ;
0000 ; unsigned char CurSongTim[3]={0,0,0,}; //當前歌曲的播放時間 分:秒:百秒
0000 ; unsigned char TotalSongTim[4]={0,0,0,0,}; //當前歌曲的播放時間 時:分:秒:百秒
0000 ;
0000 ; void timer0_init(void)
0000 ; {
0000 .dbline 19
0000 ; CLI(); //disable all interrupts
0000 F894 cli
0002 .dbline 20
0002 ; ;
0002 .dbline 21
0002 ; TCCR0 = 0x00; //stop
0002 2224 clr R2
0004 23BE out 0x33,R2
0006 .dbline 22
0006 ; TCNT0 = 0xB2; //set count
0006 82EB ldi R24,178
0008 82BF out 0x32,R24
000A .dbline 23
000A ; OCR0 = 0x4E; //set compare
000A 8EE4 ldi R24,78
000C 8CBF out 0x3c,R24
000E .dbline 24
000E ; TCCR0 = 0x05; //start timer
000E 85E0 ldi R24,5
0010 83BF out 0x33,R24
0012 .dbline 25
0012 ; ;
0012 .dbline 26
0012 ; MCUCR = 0x00;
0012 25BE out 0x35,R2
0014 .dbline 27
0014 ; GICR = 0x00;
0014 2BBE out 0x3b,R2
0016 .dbline 28
0016 ; TIMSK = 0x01; //timer interrupt sources
0016 81E0 ldi R24,1
0018 89BF out 0x39,R24
001A .dbline 29
001A ; SEI(); //re-enable interrupts
001A 7894 sei
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
.area vector(rom, abs)
.org 36
0024 0C940F00 jmp _timer0_ovf_isr
.area text(rom, con, rel)
001E .dbfile D:\學習\AVRpro\Mega16程序\TestLCD\Timer.C
001E .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
001E _timer0_ovf_isr::
001E 0A92 st -y,R0
0020 1A92 st -y,R1
0022 2A92 st -y,R2
0024 3A92 st -y,R3
0026 4A92 st -y,R4
0028 5A92 st -y,R5
002A 6A92 st -y,R6
002C 7A92 st -y,R7
002E 8A92 st -y,R8
0030 9A92 st -y,R9
0032 0A93 st -y,R16
0034 1A93 st -y,R17
0036 2A93 st -y,R18
0038 3A93 st -y,R19
003A 8A93 st -y,R24
003C 9A93 st -y,R25
003E AA93 st -y,R26
0040 BA93 st -y,R27
0042 EA93 st -y,R30
0044 FA93 st -y,R31
0046 0FB6 in R0,0x3f
0048 0A92 st -y,R0
004A 2397 sbiw R28,3
004C .dbline -1
004C .dbline 34
004C ; }
004C ;
004C ; #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
004C ; void timer0_ovf_isr(void)
004C ; {
004C .dbline 35
004C ; TCNT0 = 0xB2; //reload counter value
004C 82EB ldi R24,178
004E 82BF out 0x32,R24
0050 .dbline 37
0050 ; //時鐘處理
0050 ; CurSongTim[2]++;TotalSongTim[3]++;
0050 80910200 lds R24,_CurSongTim+2
0054 8F5F subi R24,255 ; addi 1
0056 80930200 sts _CurSongTim+2,R24
005A .dbline 37
005A 80910600 lds R24,_TotalSongTim+3
005E 8F5F subi R24,255 ; addi 1
0060 80930600 sts _TotalSongTim+3,R24
0064 .dbline 38
0064 ; if(CurSongTim[2]>=100) //百分秒溢出
0064 80910200 lds R24,_CurSongTim+2
0068 8436 cpi R24,100
006A 68F1 brlo L5
006C X0:
006C .dbline 39
006C ; {
006C .dbline 40
006C ; CurSongTim[2]=0;
006C 2224 clr R2
006E 20920200 sts _CurSongTim+2,R2
0072 .dbline 41
0072 ; CurSongTim[1]++;
0072 80910100 lds R24,_CurSongTim+1
0076 8F5F subi R24,255 ; addi 1
0078 80930100 sts _CurSongTim+1,R24
007C .dbline 43
007C ;
007C ; if(CurSongTim[1]>=60) //秒溢出
007C 8C33 cpi R24,60
007E 38F0 brlo L10
0080 X1:
0080 .dbline 44
0080 ; {
0080 .dbline 45
0080 ; CurSongTim[1]=0;
0080 20920100 sts _CurSongTim+1,R2
0084 .dbline 46
0084 ; CurSongTim[0]+=1;
0084 80910000 lds R24,_CurSongTim
0088 8F5F subi R24,255 ; addi 1
008A 80930000 sts _CurSongTim,R24
008E .dbline 49
008E ; //分處理:
008E ; //分處理結(jié)束
008E ; }
008E L10:
008E .dbline 51
008E ; //秒處理:
008E ; if(SWPlayTime)
008E 20900000 lds R2,_SWPlayTime
0092 2220 tst R2
0094 C1F0 breq L14
0096 X2:
0096 .dbline 52
0096 ; {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -