?? main.lis
字號:
.module main.c
.area lit(rom, con, rel)
0000 _tab::
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
000A .dbfile D:\YM200\內(nèi)部EEPROM\main.c
000A .dbsym e tab _tab A[10:10]kc
.area data(ram, con, rel)
0000 .dbfile D:\YM200\內(nèi)部EEPROM\main.c
0000 _buff::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .dbfile D:\YM200\內(nèi)部EEPROM\main.c
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .dbfile D:\YM200\內(nèi)部EEPROM\main.c
0004 .blkb 2
.area idata
0004 0000 .byte 0,0
.area data(ram, con, rel)
0006 .dbfile D:\YM200\內(nèi)部EEPROM\main.c
0006 .blkb 2
.area idata
0006 0000 .byte 0,0
.area data(ram, con, rel)
0008 .dbfile D:\YM200\內(nèi)部EEPROM\main.c
0008 .dbsym e buff _buff A[8:8]c
.area text(rom, con, rel)
0000 .dbfile D:\YM200\內(nèi)部EEPROM\main.c
0000 .dbfunc e delay _delay fV
0000 ; x -> R16,R17
.even
0000 _delay::
0000 .dbline -1
0000 .dbline 24
0000 ; /*內(nèi)部EEPROM讀寫實驗,本實驗涉及數(shù)碼管串行顯示,建議在掌握數(shù)碼管串行顯示的
0000 ; 基礎上,來學習本例程。本實驗可記錄系統(tǒng)啟動次數(shù),每啟動一次,數(shù)碼管顯示數(shù)據(jù)
0000 ; 加一,此數(shù)據(jù)保存于ATmega16內(nèi)部EEPROM中。*/
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <led.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; const uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)碼管段碼
0000 ; uchar buff[8]={0,0,0,0,0,0,0,0}; //8位顯示緩沖區(qū)
0000 ;
0000 ;
0000 ; extern void EEPROM_write(unsigned int addr, unsigned char dd);
0000 ; extern void EEPROM_read(unsigned int addr,unsigned char *dd);
0000 ;
0000 ; /*-------------------------------------------------------------------
0000 ; delay :短延時函數(shù)
0000 ; 輸入?yún)?shù) x :粗略延時,x越大,延時越長
0000 ; 輸出參數(shù) :無
0000 ; --------------------------------------------------------------------*/
0000 ; void delay(unsigned int x)
0000 ; {
0000 L2:
0000 .dbline 25
0000 L3:
0000 .dbline 25
0000 ; while(x--);
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 x 16 i
0010 .dbend
0010 .dbfunc e L_delay _L_delay fV
0010 ; y -> R20,R21
.even
0010 _L_delay::
0010 0E940000 xcall push_gset1
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 33
0016 ; }
0016 ; /*------------------------------------------------------------------
0016 ; L_delay :長延時函數(shù)
0016 ; 輸入?yún)?shù) y :粗略延時,y越大,延時越長
0016 ; 輸出參數(shù) :無
0016 ; --------------------------------------------------------------------*/
0016 ; void L_delay(unsigned int y)
0016 ; {
0016 03C0 xjmp L7
0018 L6:
0018 .dbline 34
0018 08EE ldi R16,65000
001A 1DEF ldi R17,253
001C F1DF xcall _delay
001E L7:
001E .dbline 34
001E ; while(y--) delay(65000);
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 y 20 i
0032 .dbend
0032 .dbfunc e PORT_init _PORT_init fV
.even
0032 _PORT_init::
0032 .dbline -1
0032 .dbline 42
0032 ; }
0032 ; /*-----------------------------------------------------------
0032 ; PORT_init :端口初始化函數(shù)
0032 ; 輸入?yún)?shù) :無
0032 ; 輸出參數(shù) :無
0032 ; ------------------------------------------------------------*/
0032 ; void PORT_init(void)
0032 ; {
0032 .dbline 43
0032 ; LED_DATA_DDR|=LED_NCS|LED_SCK|LED_MOSI; //設置為輸出
0032 8AB3 in R24,0x1a
0034 8C61 ori R24,28
0036 8ABB out 0x1a,R24
0038 .dbline 44
0038 ; LED_SEL_DDR |=LED_SELA|LED_SELB|LED_SELC; //設置為輸出
0038 8AB3 in R24,0x1a
003A 806E ori R24,224
003C 8ABB out 0x1a,R24
003E .dbline 46
003E ;
003E ; LED_DATA_PORT&=~(LED_NCS|LED_SCK|LED_MOSI); //輸出0
003E 8BB3 in R24,0x1b
0040 837E andi R24,227
0042 8BBB out 0x1b,R24
0044 .dbline 47
0044 ; LED_SEL_PORT &=~(LED_SELA|LED_SELB|LED_SELC); //輸出0
0044 8BB3 in R24,0x1b
0046 8F71 andi R24,31
0048 8BBB out 0x1b,R24
004A .dbline 49
004A ;
004A ; PORTC=0xff;
004A 8FEF ldi R24,255
004C 85BB out 0x15,R24
004E .dbline 50
004E ; DDRC=0x00;
004E 2224 clr R2
0050 24BA out 0x14,R2
0052 .dbline -2
0052 L9:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
0054 .dbfunc e disp _disp fV
0054 ; i -> R20
0054 ; aa -> R22
0054 ; j -> R10
.even
0054 _disp::
0054 0E940000 xcall push_gset3
0058 .dbline -1
0058 .dbline 58
0058 ; }
0058 ; /*-----------------------------------------------------------
0058 ; disp :數(shù)碼管顯示函數(shù)
0058 ; 輸入?yún)?shù) :無
0058 ; 輸出參數(shù) :無
0058 ; ------------------------------------------------------------*/
0058 ; void disp(void)
0058 ; {
0058 .dbline 61
0058 ; uchar aa,i,j;
0058 ;
0058 ; for(i=0;i<8;i++)
0058 4427 clr R20
005A 3DC0 xjmp L14
005C L11:
005C .dbline 62
005C ; {
005C .dbline 63
005C ; aa=~tab[buff[7-i]];
005C 242E mov R2,R20
005E 3324 clr R3
0060 E7E0 ldi R30,7
0062 F0E0 ldi R31,0
0064 E219 sub R30,R2
0066 F309 sbc R31,R3
0068 80E0 ldi R24,<_buff
006A 90E0 ldi R25,>_buff
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -