📄 led.lis
字号:
.module LED.C
.area text(rom, con, rel)
0000 .dbfile F:\辛涛\实验板\实验板程序\数码管显示\LED.C
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 18
0000 ; /*********************************************
0000 ; ************PC0==>DATA
0000 ; ************PC1==>SCLK
0000 ; ************PC2==>C0
0000 ; ************PC3==>C1
0000 ; ************PC4==>C2
0000 ; ************PC5==>C3
0000 ; ************PC6==>C4
0000 ; **********************************************/
0000 ; //ICC-AVR application builder : 2007-4-4 15:05:58
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 19
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 20
0004 ; DDRB = 0x00;
0004 2224 clr R2
0006 27BA out 0x17,R2
0008 .dbline 21
0008 ; PORTC = 0x7F; //m103 output only
0008 8FE7 ldi R24,127
000A 85BB out 0x15,R24
000C .dbline 22
000C ; DDRC = 0x7F;
000C 84BB out 0x14,R24
000E .dbline 23
000E ; PORTD = 0xFF;
000E 8FEF ldi R24,255
0010 82BB out 0x12,R24
0012 .dbline 24
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 .dbline 25
0014 ; }
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e delay_1ms _delay_1ms fV
0016 ; i -> R16,R17
.even
0016 _delay_1ms::
0016 .dbline -1
0016 .dbline 28
0016 ; /*****************************延时函数**************************************/
0016 ; void delay_1ms(void)//1ms延时函数
0016 ; {
0016 .dbline 30
0016 ; unsigned int i;
0016 ; for (i=1;i<1571;i++)
0016 01E0 ldi R16,1
0018 10E0 ldi R17,0
001A 02C0 rjmp L6
001C L3:
001C .dbline 31
001C L4:
001C .dbline 30
001C 0F5F subi R16,255 ; offset = 1
001E 1F4F sbci R17,255
0020 L6:
0020 .dbline 30
0020 0332 cpi R16,35
0022 E6E0 ldi R30,6
0024 1E07 cpc R17,R30
0026 D0F3 brlo L3
0028 .dbline -2
0028 .dbline 32
0028 ; ;
0028 ; }
0028 L2:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r i 16 i
002A .dbend
002A .dbfunc e delay_ms _delay_ms fV
002A ; i -> R20,R21
002A ; n -> R22,R23
.even
002A _delay_ms::
002A 00D0 rcall push_gset2
002C B801 movw R22,R16
002E .dbline -1
002E .dbline 34
002E ; void delay_ms (unsigned int n)
002E ; {
002E .dbline 35
002E ; unsigned int i=0;
002E 4427 clr R20
0030 5527 clr R21
0032 .dbline 36
0032 ; for (i=0;i<n;i++)
0032 03C0 rjmp L11
0034 L8:
0034 .dbline 37
0034 F0DF rcall _delay_1ms
0036 L9:
0036 .dbline 36
0036 4F5F subi R20,255 ; offset = 1
0038 5F4F sbci R21,255
003A L11:
003A .dbline 36
003A 4617 cp R20,R22
003C 5707 cpc R21,R23
003E D0F3 brlo L8
0040 .dbline -2
0040 .dbline 38
0040 ; delay_1ms();
0040 ; }
0040 L7:
0040 00D0 rcall pop_gset2
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbsym r i 20 i
0044 .dbsym r n 22 i
0044 .dbend
0044 .dbfunc e VUART0 _VUART0 fc
0044 ; count1 -> <dead>
0044 ; VBUF -> R20
0044 ; count2 -> R22
0044 ; bit_ctr -> R10
0044 ; Display -> R22
.even
0044 _VUART0::
0044 00D0 rcall push_gset3
0046 602F mov R22,R16
0048 .dbline -1
0048 .dbline 41
0048 ; /************************虚拟串行显示通道0***************************/
0048 ; unsigned char VUART0 (unsigned char Display)
0048 ; {
0048 .dbline 43
0048 ; unsigned char VBUF,bit_ctr,count1,count2;
0048 ; VBUF=Display;
0048 .dbline 44
0048 ; bit_ctr=0x01;
0048 .dbline 45
0048 ; for (count2=0;count2<8;count2++)
0048 462F mov R20,R22
004A AA24 clr R10
004C A394 inc R10
004E 6627 clr R22
0050 19C0 rjmp L16
0052 L13:
0052 .dbline 46
0052 ; {
0052 .dbline 47
0052 ; if ((VBUF&bit_ctr)==0x00)
0052 242E mov R2,R20
0054 2A20 and R2,R10
0056 69F4 brne L17
0058 .dbline 48
0058 ; {//数据为0
0058 .dbline 49
0058 ; PORTC=0b00111100;//PC0=RXD数据
0058 8CE3 ldi R24,60
005A 85BB out 0x15,R24
005C .dbline 50
005C ; delay_ms (2);
005C 02E0 ldi R16,2
005E 10E0 ldi R17,0
0060 E4DF rcall _delay_ms
0062 .dbline 51
0062 ; PORTC=0b00111110;//PC1=TXD时钟
0062 8EE3 ldi R24,62
0064 85BB out 0x15,R24
0066 .dbline 52
0066 ; delay_ms (2);
0066 02E0 ldi R16,2
0068 10E0 ldi R17,0
006A DFDF rcall _delay_ms
006C .dbline 53
006C ; PORTC=0b00111111;//PC1=TXD时钟
006C 8FE3 ldi R24,63
006E 85BB out 0x15,R24
0070 .dbline 54
0070 ; }
0070 07C0 rjmp L18
0072 L17:
0072 .dbline 56
0072 ; else
0072 ; {//数据为1
0072 .dbline 57
0072 ; PORTC=0b00111101;//PC0=RXD数据
0072 8DE3 ldi R24,61
0074 85BB out 0x15,R24
0076 .dbline 58
0076 ; delay_ms (2);
0076 02E0 ldi R16,2
0078 10E0 ldi R17,0
007A D7DF rcall _delay_ms
007C .dbline 59
007C ; PORTC=0b00111111;//PC1=TXD时钟
007C 8FE3 ldi R24,63
007E 85BB out 0x15,R24
0080 .dbline 60
0080 ; }
0080 L18:
0080 .dbline 61
0080 AA0C lsl R10
0082 .dbline 62
0082 L14:
0082 .dbline 45
0082 6395 inc R22
0084 L16:
0084 .dbline 45
0084 6830 cpi R22,8
0086 28F3 brlo L13
0088 .dbline -2
0088 .dbline 64
0088 ; bit_ctr<<=1;
0088 ; }
0088 ;
0088 ; }
0088 L12:
0088 00D0 rcall pop_gset3
008A .dbline 0 ; func end
008A 0895 ret
008C .dbsym l count1 1 c
008C .dbsym r VBUF 20 c
008C .dbsym r count2 22 c
008C .dbsym r bit_ctr 10 c
008C .dbsym r Display 22 c
008C .dbend
008C .dbfunc e init_devices _init_devices fV
.even
008C _init_devices::
008C .dbline -1
008C .dbline 67
008C ; //call this routine to initialise all peripherals
008C ; void init_devices(void)
008C ; {
008C .dbline 69
008C ; //stop errant interrupts until set up
008C ; CLI(); //disable all interrupts
008C F894 cli
008E .dbline 70
008E ; port_init();
008E B8DF rcall _port_init
0090 .dbline 72
0090 ;
0090 ; MCUCR = 0x00;
0090 2224 clr R2
0092 25BE out 0x35,R2
0094 .dbline 73
0094 ; GICR = 0x00;
0094 2BBE out 0x3b,R2
0096 .dbline 74
0096 ; TIMSK = 0x00; //timer interrupt sources
0096 29BE out 0x39,R2
0098 .dbline 75
0098 ; SEI(); //re-enable interrupts
0098 7894 sei
009A .dbline -2
009A .dbline 77
009A ; //all peripherals are now initialised
009A ; }
009A L19:
009A .dbline 0 ; func end
009A 0895 ret
009C .dbend
009C .dbfunc e main _main fV
.even
009C _main::
009C .dbline -1
009C .dbline 79
009C ; void main()
009C ; {
009C .dbline 80
009C ; init_devices();
009C F7DF rcall _init_devices
009E .dbline 84
009E ;
009E ; //while(1)
009E ; // {
009E ; VUART0 (0xff);
009E 0FEF ldi R16,255
00A0 .dbline -2
00A0 .dbline 86
00A0 ; //}
00A0 ; }
00A0 L20:
00A0 .dbline 0 ; func end
00A0 D1CF rjmp _VUART0
00A2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -