📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _BitTab::
0000 .blkb 2
.area idata
0000 FEFD .byte 254,253
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 FBF7 .byte 251,247
.area data(ram, con, rel)
0004 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
0004 .dbsym e BitTab _BitTab A[4:4]c
0004 _DispTab::
0004 .blkb 2
.area idata
0004 3F06 .byte 63,6
.area data(ram, con, rel)
0006 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
0006 .blkb 2
.area idata
0006 5B4F .byte 91,'O
.area data(ram, con, rel)
0008 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
0008 .blkb 2
.area idata
0008 666D .byte 'f,'m
.area data(ram, con, rel)
000A .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
000A .blkb 2
.area idata
000A 7D07 .byte 125,7
.area data(ram, con, rel)
000C .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
000C .blkb 2
.area idata
000C 7F6F .byte 127,'o
.area data(ram, con, rel)
000E .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
000E .dbsym e DispTab _DispTab A[10:10]c
.area text(rom, con, rel)
0000 .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
0000 .dbfunc e INT0_Init _INT0_Init fV
.even
0000 _INT0_Init::
0000 .dbline -1
0000 .dbline 51
0000 ; /****************************************Copyright (c)**************************************************
0000 ; ** ADEmbed Development Co.,LTD.
0000 ; ** http://www.adembed.com
0000 ; **--------------File Info-------------------------------------------------------------------------------
0000 ; ** File name: main.c
0000 ; ** Last modified Date: 2008-12-13
0000 ; ** Last Version: 1.0
0000 ; ** Descriptions: Nixie Light Test.
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; ** Created by: junbolu
0000 ; ** Created date: 2008-12-13
0000 ; ** Version: 1.0
0000 ; ** Descriptions:
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; ** Modified by:
0000 ; ** Modified date:
0000 ; ** Version:
0000 ; ** Descriptions:
0000 ; **
0000 ; **------------------------------------------------------------------------------------------------------
0000 ; **ICC-AVR application builder : 2008-12-13
0000 ; **Target : M16
0000 ; **Crystal: 7.3728Mhz
0000 ; **PA0~PA7口接LED的段码
0000 ; **PB0~PB3口接LED的位选
0000 ; **描述:这是一个秒表实验,最大支持99.99秒。由按键K0完成启动计时和停止计时。
0000 ; **涉及知识点:
0000 ; ** T/C0的CTC工作模式
0000 ; ** INT0的下降沿中断工作模式
0000 ; *******************************************************************************************************/
0000 ; #include<iom16v.h>
0000 ; #include<macros.h>
0000 ;
0000 ; #define fose 7372800
0000 ;
0000 ; #define START 0
0000 ; #define STOP 1
0000 ; #define CLEAR 3
0000 ; unsigned char Nixie_State;
0000 ; unsigned int time_10ms;
0000 ; unsigned char DISP_NUM; //显示的位数
0000 ; unsigned char BitTab[]={0xFE,0xFD,0xFB,0xF7}; //三位位选码
0000 ; unsigned char DispTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //LED字形码
0000 ; unsigned char DISP_DATA[4]; //显示的数字
0000 ;
0000 ; void Display(void);
0000 ;
0000 ; void INT0_Init()
0000 ; {
0000 .dbline 52
0000 ; GIFR |=0X40; //清楚标志位
0000 8AB7 in R24,0x3a
0002 8064 ori R24,64
0004 8ABF out 0x3a,R24
0006 .dbline 54
0006 ; //MCUCR|=0X03; //上升沿触发中断
0006 ; MCUCR|=0X02;MCUCR&=~0X01; //下降沿触发中断
0006 85B7 in R24,0x35
0008 8260 ori R24,2
000A 85BF out 0x35,R24
000C .dbline 54
000C 85B7 in R24,0x35
000E 8E7F andi R24,254
0010 85BF out 0x35,R24
0012 .dbline 55
0012 ; GICR |=0X40; //使能外部中断0
0012 8BB7 in R24,0x3b
0014 8064 ori R24,64
0016 8BBF out 0x3b,R24
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
.area vector(rom, abs)
.org 4
0004 0C940D00 jmp _int0_isr
.area text(rom, con, rel)
001A .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管秒表系统\main.c
001A .dbfunc e int0_isr _int0_isr fV
.even
001A _int0_isr::
001A 2A92 st -y,R2
001C 3A92 st -y,R3
001E 8A93 st -y,R24
0020 2FB6 in R2,0x3f
0022 2A92 st -y,R2
0024 .dbline -1
0024 .dbline 60
0024 ; }
0024 ;
0024 ; #pragma interrupt_handler int0_isr:2
0024 ; void int0_isr(void)
0024 ; {
0024 .dbline 62
0024 ;
0024 ; if((PIND&0x04)!=0x00) //读取按键状态
0024 829B sbis 0x10,2
0026 01C0 rjmp L3
0028 .dbline 63
0028 ; {
0028 .dbline 64
0028 ; return;
0028 10C0 xjmp L2
002A L3:
002A .dbline 66
002A ; }
002A ; if(Nixie_State ==STOP)
002A 80910700 lds R24,_Nixie_State
002E 8130 cpi R24,1
0030 49F4 brne L5
0032 .dbline 67
0032 ; {
0032 .dbline 68
0032 ; time_10ms = 0;
0032 2224 clr R2
0034 3324 clr R3
0036 30920600 sts _time_10ms+1,R3
003A 20920500 sts _time_10ms,R2
003E .dbline 69
003E ; Nixie_State = START;
003E 20920700 sts _Nixie_State,R2
0042 .dbline 70
0042 ; }
0042 03C0 xjmp L6
0044 L5:
0044 .dbline 72
0044 .dbline 73
0044 81E0 ldi R24,1
0046 80930700 sts _Nixie_State,R24
004A .dbline 74
004A L6:
004A .dbline -2
004A L2:
004A 2990 ld R2,y+
004C 2FBE out 0x3f,R2
004E 8991 ld R24,y+
0050 3990 ld R3,y+
0052 2990 ld R2,y+
0054 .dbline 0 ; func end
0054 1895 reti
0056 .dbend
0056 .dbfunc e Display _Display fV
.even
0056 _Display::
0056 .dbline -1
0056 .dbline 81
0056 ; else
0056 ; {
0056 ; Nixie_State = STOP;
0056 ; }
0056 ;
0056 ; }
0056 ;
0056 ; //显示函数,DISP_NUM决定显示哪个LED
0056 ; //采用共阴LED动态显示方法,定时中断函数里面调用
0056 ; void Display(void)
0056 ; {
0056 .dbline 82
0056 ; PORTA=0x00; //清除显示再位选
0056 2224 clr R2
0058 2BBA out 0x1b,R2
005A .dbline 83
005A ; PORTB=BitTab[DISP_NUM]; //PB口接位选
005A 80E0 ldi R24,<_BitTab
005C 90E0 ldi R25,>_BitTab
005E E0910400 lds R30,_DISP_NUM
0062 FF27 clr R31
0064 E80F add R30,R24
0066 F91F adc R31,R25
0068 2080 ldd R2,z+0
006A 28BA out 0x18,R2
006C .dbline 84
006C ; PORTA=DispTab[DISP_DATA[DISP_NUM]]; //PA口接LED的段码
006C 80E0 ldi R24,<_DISP_DATA
006E 90E0 ldi R25,>_DISP_DATA
0070 E0910400 lds R30,_DISP_NUM
0074 FF27 clr R31
0076 E80F add R30,R24
0078 F91F adc R31,R25
007A E081 ldd R30,z+0
007C FF27 clr R31
007E 80E0 ldi R24,<_DispTab
0080 90E0 ldi R25,>_DispTab
0082 E80F add R30,R24
0084 F91F adc R31,R25
0086 2080 ldd R2,z+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -