⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led_test.lis

📁 mega16_32实验板上的程序:mega16+74ls164+数码管或LED显示程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module led_test.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\led_test.c
 0000                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; /**********延时函数*****************/
 0000           ; /*-----------------------------------------------
 0000           ; delay_us         :1us延时函数
 0000           ; ------------------------------------------------*/
 0000           ; void delay_1us(void)
 0000           ; {
 0000                   .dbline 7
 0000           ;  asm("nop");
 0000 0000              nop
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e delay_us _delay_us fV
 0004           ;              t -> R20,R21
                        .even
 0004           _delay_us::
 0004 4A93              st -y,R20
 0006 5A93              st -y,R21
 0008 A801              movw R20,R16
 000A                   .dbline -1
 000A                   .dbline 14
 000A           ; }
 000A           ; /*-----------------------------------------------
 000A           ; delay_nus          :长延时函数
 000A           ; 输入参数: t        :延时时间 us
 000A           ; ------------------------------------------------*/
 000A           ; void delay_us(unsigned int t)
 000A           ; {
 000A 01C0              xjmp L4
 000C           L3:
 000C                   .dbline 16
 000C           ;  while(t--)
 000C           ;   delay_1us();
 000C F9DF              xcall _delay_1us
 000E           L4:
 000E                   .dbline 15
 000E 1A01              movw R2,R20
 0010 4150              subi R20,1
 0012 5040              sbci R21,0
 0014 2220              tst R2
 0016 D1F7              brne L3
 0018 3320              tst R3
 001A C1F7              brne L3
 001C           X0:
 001C                   .dbline -2
 001C           L2:
 001C                   .dbline 0 ; func end
 001C 5991              ld R21,y+
 001E 4991              ld R20,y+
 0020 0895              ret
 0022                   .dbsym r t 20 i
 0022                   .dbend
 0022                   .dbfunc e delay_1ms _delay_1ms fV
 0022           ;              i -> R16,R17
                        .even
 0022           _delay_1ms::
 0022                   .dbline -1
 0022                   .dbline 22
 0022           ; }
 0022           ; /*----------------------------------------------
 0022           ; delay_ms         :1ms延时函数
 0022           ; -----------------------------------------------*/
 0022           ; void delay_1ms(void)
 0022           ; {
 0022                   .dbline 24
 0022           ;  unsigned int i;
 0022           ;  for(i=0;i<1140;i++);
 0022 0027              clr R16
 0024 1127              clr R17
 0026 02C0              xjmp L10
 0028           L7:
 0028                   .dbline 24
 0028           L8:
 0028                   .dbline 24
 0028 0F5F              subi R16,255  ; offset = 1
 002A 1F4F              sbci R17,255
 002C           L10:
 002C                   .dbline 24
 002C 0437              cpi R16,116
 002E E4E0              ldi R30,4
 0030 1E07              cpc R17,R30
 0032 D0F3              brlo L7
 0034           X1:
 0034                   .dbline -2
 0034           L6:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 16 i
 0036                   .dbend
 0036                   .dbfunc e delay_ms _delay_ms fV
 0036           ;              t -> R20,R21
                        .even
 0036           _delay_ms::
 0036 4A93              st -y,R20
 0038 5A93              st -y,R21
 003A A801              movw R20,R16
 003C                   .dbline -1
 003C                   .dbline 31
 003C           ; }
 003C           ; /*----------------------------------------------
 003C           ; delay_nms          :长延时函数
 003C           ; 输入参数: t        :延时时间 ms
 003C           ; -----------------------------------------------*/
 003C           ; void delay_ms(unsigned int t)
 003C           ; {
 003C 01C0              xjmp L13
 003E           L12:
 003E                   .dbline 33
 003E           ;  while(t--)
 003E           ;   delay_1ms();
 003E F1DF              xcall _delay_1ms
 0040           L13:
 0040                   .dbline 32
 0040 1A01              movw R2,R20
 0042 4150              subi R20,1
 0044 5040              sbci R21,0
 0046 2220              tst R2
 0048 D1F7              brne L12
 004A 3320              tst R3
 004C C1F7              brne L12
 004E           X2:
 004E                   .dbline -2
 004E           L11:
 004E                   .dbline 0 ; func end
 004E 5991              ld R21,y+
 0050 4991              ld R20,y+
 0052 0895              ret
 0054                   .dbsym r t 20 i
 0054                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 0000           _Table::
 0000                   .blkb 2
                        .area idata
 0000 3F06              .byte 63,6
                        .area data(ram, con, rel)
 0002                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 0002                   .blkb 2
                        .area idata
 0002 5B4F              .byte 91,'O
                        .area data(ram, con, rel)
 0004                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 0004                   .blkb 2
                        .area idata
 0004 666D              .byte 'f,'m
                        .area data(ram, con, rel)
 0006                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 0006                   .blkb 2
                        .area idata
 0006 7D07              .byte 125,7
                        .area data(ram, con, rel)
 0008                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 0008                   .blkb 2
                        .area idata
 0008 7F6F              .byte 127,'o
                        .area data(ram, con, rel)
 000A                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
 000A                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\164.h
 000A                   .dbsym e Table _Table A[10:10]c
                        .area text(rom, con, rel)
 0054                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\164\led\164.h
 0054                   .dbfunc e Init_164 _Init_164 fV
                        .even
 0054           _Init_164::
 0054                   .dbline -1
 0054                   .dbline 18
 0054           ; //定义LS164管脚和led控制脚
 0054           ; #define DDR_CLK    DDRA
 0054           ; #define DDR_DATA   DDRA
 0054           ; #define DDR_CLEAR  DDRA
 0054           ; #define DDR_SEL    DDRC
 0054           ; #define PORT_CLK   PORTA
 0054           ; #define PORT_DATA  PORTA
 0054           ; #define PORT_CLEAR PORTA
 0054           ; #define PORT_SEL   PORTC
 0054           ; #define CLK PA2
 0054           ; #define DATA PA4
 0054           ; #define CLEAR PA3
 0054           ; #define SEL 0x3C
 0054           ; 
 0054           ; unsigned char Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 0054           ; 
 0054           ; void Init_164()
 0054           ; {
 0054                   .dbline 19
 0054           ;  DDR_CLK|=(1<<CLK);      //164的时钟,数据,清零
 0054 D29A              sbi 0x1a,2
 0056                   .dbline 20
 0056           ;  DDR_DATA|=(1<<DATA);
 0056 D49A              sbi 0x1a,4
 0058                   .dbline 21
 0058           ;  DDR_CLEAR|=(1<<CLEAR);
 0058 D39A              sbi 0x1a,3
 005A                   .dbline 22
 005A           ;  DDR_SEL|=SEL;  //4位数码管选通端
 005A 84B3              in R24,0x14
 005C 8C63              ori R24,60
 005E 84BB              out 0x14,R24
 0060                   .dbline 23
 0060           ;  PORT_SEL|=SEL;
 0060 85B3              in R24,0x15
 0062 8C63              ori R24,60
 0064 85BB              out 0x15,R24
 0066                   .dbline -2
 0066           L15:
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbend
 0068                   .dbfunc e Clear_164 _Clear_164 fV
                        .even
 0068           _Clear_164::
 0068                   .dbline -1
 0068                   .dbline 27
 0068           ; }
 0068           ; 
 0068           ; void Clear_164()
 0068           ; {
 0068                   .dbline 28
 0068           ;  PORT_CLEAR|=(1<<CLEAR); 
 0068 DB9A              sbi 0x1b,3
 006A                   .dbline -2
 006A           L16:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -