?? 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
000E _DISP_DATA::
000E .blkb 2
.area idata
000E 0200 .byte 2,0
.area data(ram, con, rel)
0010 .dbfile E:\MYWORK~1\開發設計\EasyAVR\程序范例\Mega16程序包\完成整理\數碼管測試\main.c
0010 .blkb 2
.area idata
0010 0009 .byte 0,9
.area data(ram, con, rel)
0012 .dbfile E:\MYWORK~1\開發設計\EasyAVR\程序范例\Mega16程序包\完成整理\數碼管測試\main.c
0012 .dbsym e DISP_DATA _DISP_DATA A[4:4]c
.area text(rom, con, rel)
0000 .dbfile E:\MYWORK~1\開發設計\EasyAVR\程序范例\Mega16程序包\完成整理\數碼管測試\main.c
0000 .dbfunc e Delay_us _Delay_us fV
0000 ; time -> R16,R17
.even
0000 _Delay_us::
0000 .dbline -1
0000 .dbline 48
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: StopWatch.
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 ; **描述:這是一個LED數碼管測試程序。采用共陰LED數碼管,動態顯示固定數字2009。
0000 ; ** 沒有一點多余的代碼,清晰明了。
0000 ; **
0000 ; **涉及知識點:
0000 ; ** DO輸出
0000 ; ** for 循環的應用
0000 ; ** 數組的簡單應用
0000 ; *******************************************************************************************************/
0000 ;
0000 ; #include<iom16v.h>
0000 ; #include<macros.h>
0000 ;
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]={2,0,0,9}; //顯示的數字
0000 ;
0000 ; void Display(void);
0000 ;
0000 ; void Delay_us(unsigned int time)
0000 ; {
0000 L2:
0000 .dbline 49
0000 L3:
0000 .dbline 49
0000 ; while(time--);
0000 1801 movw R2,R16
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 2220 tst R2
0008 D9F7 brne L2
000A 3320 tst R3
000C C9F7 brne L2
000E X0:
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r time 16 i
0010 .dbend
0010 .dbfunc e Delay_ms _Delay_ms fV
0010 ; time -> R20,R21
.even
0010 _Delay_ms::
0010 0E940000 xcall push_gset1
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 53
0016 ; }
0016 ;
0016 ; void Delay_ms(unsigned int time)
0016 ; {
0016 03C0 xjmp L7
0018 L6:
0018 .dbline 55
0018 .dbline 56
0018 00E1 ldi R16,10000
001A 17E2 ldi R17,39
001C F1DF xcall _Delay_us
001E .dbline 57
001E L7:
001E .dbline 54
001E ; while(time--)
001E 1A01 movw R2,R20
0020 4150 subi R20,1
0022 5040 sbci R21,0
0024 2220 tst R2
0026 C1F7 brne L6
0028 3320 tst R3
002A B1F7 brne L6
002C X1:
002C .dbline -2
002C L5:
002C 0E940000 xcall pop_gset1
0030 .dbline 0 ; func end
0030 0895 ret
0032 .dbsym r time 20 i
0032 .dbend
0032 .dbfunc e Display _Display fV
.even
0032 _Display::
0032 .dbline -1
0032 .dbline 62
0032 .dbline 63
0032 2224 clr R2
0034 2BBA out 0x1b,R2
0036 .dbline 64
0036 80E0 ldi R24,<_BitTab
0038 90E0 ldi R25,>_BitTab
003A E0910000 lds R30,_DISP_NUM
003E FF27 clr R31
0040 E80F add R30,R24
0042 F91F adc R31,R25
0044 2080 ldd R2,z+0
0046 28BA out 0x18,R2
0048 .dbline 65
0048 80E0 ldi R24,<_DISP_DATA
004A 90E0 ldi R25,>_DISP_DATA
004C E0910000 lds R30,_DISP_NUM
0050 FF27 clr R31
0052 E80F add R30,R24
0054 F91F adc R31,R25
0056 E081 ldd R30,z+0
0058 FF27 clr R31
005A 80E0 ldi R24,<_DispTab
005C 90E0 ldi R25,>_DispTab
005E E80F add R30,R24
0060 F91F adc R31,R25
0062 2080 ldd R2,z+0
0064 2BBA out 0x1b,R2
0066 .dbline 68
0066 80910000 lds R24,_DISP_NUM
006A 8F5F subi R24,255 ; addi 1
006C 80930000 sts _DISP_NUM,R24
0070 .dbline 69
0070 8430 cpi R24,4
0072 19F4 brne L10
0074 .dbline 70
0074 2224 clr R2
0076 20920000 sts _DISP_NUM,R2
007A L10:
007A .dbline -2
007A L9:
007A .dbline 0 ; func end
007A 0895 ret
007C .dbend
007C .dbfunc e main _main fV
.even
007C _main::
007C .dbline -1
007C .dbline 74
007C ; {
007C ; Delay_us(10000);
007C ; }
007C ; }
007C ;
007C ; //顯示函數,DISP_NUM決定顯示哪個LED
007C ; void Display(void)
007C ; {
007C ; PORTA=0x00; //清除顯示再位選
007C ; PORTB=BitTab[DISP_NUM]; //PB口接位選
007C ; PORTA=DispTab[DISP_DATA[DISP_NUM]]; //PA口接LED的段碼
007C ;
007C ;
007C ; DISP_NUM++; //先顯示低位,再顯示高位
007C ; if(DISP_NUM==4)
007C ; DISP_NUM=0;
007C ; }
007C ;
007C ; void main(void)
007C ; {
007C .dbline 75
007C ; DDRA=0XFF;
007C 8FEF ldi R24,255
007E 8ABB out 0x1a,R24
0080 .dbline 76
0080 ; PORTA=0X00;
0080 2224 clr R2
0082 2BBA out 0x1b,R2
0084 .dbline 77
0084 ; DDRB=0X0F;
0084 8FE0 ldi R24,15
0086 87BB out 0x17,R24
0088 .dbline 78
0088 ; PORTB=0X00;
0088 28BA out 0x18,R2
008A .dbline 80
008A ;
008A ; DISP_NUM=0;
008A 20920000 sts _DISP_NUM,R2
008E .dbline 81
008E ; for(;;)
008E L13:
008E .dbline 82
008E .dbline 83
008E 08EC ldi R16,200
0090 10E0 ldi R17,0
0092 B6DF xcall _Delay_us
0094 .dbline 84
0094 CEDF xcall _Display
0096 .dbline 85
0096 .dbline 81
0096 .dbline 81
0096 FBCF xjmp L13
0098 X2:
0098 .dbline -2
0098 L12:
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\MYWORK~1\開發設計\EasyAVR\程序范例\Mega16程序包\完成整理\數碼管測試\main.c
0000 _DISP_NUM::
0000 .blkb 1
0001 .dbsym e DISP_NUM _DISP_NUM c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -