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

📄 dianziqin.lis

📁 很好的avr单片机入门程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module dianziqin.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\dianziqin.c
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\delay.h
 0000                   .dbfunc e delay_1ms _delay_1ms fV
 0000           ;              i -> R16,R17
                        .even
 0000           _delay_1ms::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ; /* 1MHz 下延时程序*/
 0000           ; 
 0000           ; #ifndef DELAY_H_H
 0000           ; #define DELAY_H_H
 0000           ; 
 0000           ; void delay_1ms(void)             //1ms 延时
 0000           ; {
 0000                   .dbline 16
 0000           ;   unsigned int i;
 0000           ;  /* 
 0000           ;   for(i=1;i<140;i++)   //1MHz
 0000           ;   ;
 0000           ; 
 0000           ;   for(i=1331;i>0;i--)   // 8MHz
 0000           ; ;
 0000           ;  */
 0000           ;  for(i=0;i<2;i++)   //1MHz,24us
 0000 0027              clr R16
 0002 1127              clr R17
 0004 02C0              xjmp L5
 0006           L2:
 0006                   .dbline 17
 0006           ; ;
 0006           L3:
 0006                   .dbline 16
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 16
 000A 0230              cpi R16,2
 000C E0E0              ldi R30,0
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012           X0:
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 16 i
 0014                   .dbend
 0014                   .dbfunc e delay _delay fV
 0014           ;              i -> R20,R21
 0014           ;              n -> R10,R11
                        .even
 0014           _delay::
 0014 0E940000          xcall push_xgset300C
 0018 5801              movw R10,R16
 001A                   .dbline -1
 001A                   .dbline 21
 001A           ; }
 001A           ; 
 001A           ; void delay(unsigned int n)
 001A           ; {
 001A                   .dbline 22
 001A           ;  unsigned int i=0;
 001A 4427              clr R20
 001C 5527              clr R21
 001E                   .dbline 23
 001E           ;  for(i=0;i<n;i++)
 001E 03C0              xjmp L10
 0020           L7:
 0020                   .dbline 24
 0020           ;  delay_1ms();
 0020 EFDF              xcall _delay_1ms
 0022           L8:
 0022                   .dbline 23
 0022 4F5F              subi R20,255  ; offset = 1
 0024 5F4F              sbci R21,255
 0026           L10:
 0026                   .dbline 23
 0026 4A15              cp R20,R10
 0028 5B05              cpc R21,R11
 002A D0F3              brlo L7
 002C           X1:
 002C                   .dbline -2
 002C           L6:
 002C                   .dbline 0 ; func end
 002C 0C940000          xjmp pop_xgset300C
 0030                   .dbsym r i 20 i
 0030                   .dbsym r n 10 i
 0030                   .dbend
 0030                   .dbfunc e delay_ms _delay_ms fV
 0030           ;              i -> R20,R21
 0030           ;              n -> R16,R17
                        .even
 0030           _delay_ms::
 0030 4A93              st -y,R20
 0032 5A93              st -y,R21
 0034                   .dbline -1
 0034                   .dbline 28
 0034           ; }
 0034           ; 
 0034           ; void delay_ms(int n)
 0034           ; {
 0034                   .dbline 30
 0034           ;  int i;
 0034           ;  for(i=0;i<n;i++)
 0034 4427              clr R20
 0036 5527              clr R21
 0038 0AC0              xjmp L15
 003A           L12:
 003A                   .dbline 31
 003A           ;  {
 003A                   .dbline 32
 003A           ;   for(i=0;i<140;i++)
 003A 4427              clr R20
 003C 5527              clr R21
 003E           L16:
 003E                   .dbline 33
 003E           ;   ;
 003E           L17:
 003E                   .dbline 32
 003E 4F5F              subi R20,255  ; offset = 1
 0040 5F4F              sbci R21,255
 0042                   .dbline 32
 0042 4C38              cpi R20,140
 0044 E0E0              ldi R30,0
 0046 5E07              cpc R21,R30
 0048 D4F3              brlt L16
 004A           X2:
 004A                   .dbline 34
 004A           ;  }
 004A           L13:
 004A                   .dbline 30
 004A 4F5F              subi R20,255  ; offset = 1
 004C 5F4F              sbci R21,255
 004E           L15:
 004E                   .dbline 30
 004E 4017              cp R20,R16
 0050 5107              cpc R21,R17
 0052 9CF3              brlt L12
 0054           X3:
 0054                   .dbline -2
 0054           L11:
 0054                   .dbline 0 ; func end
 0054 5991              ld R21,y+
 0056 4991              ld R20,y+
 0058 0895              ret
 005A                   .dbsym r i 20 I
 005A                   .dbsym r n 16 I
 005A                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\delay.h
 0000           _count::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\delay.h
 0001                   .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\dianziqin.c
 0001                   .dbsym e count _count c
                        .area lit(rom, con, rel)
 0000           _music_key::
 0000 2723              .byte 39,35
 0002 1F00              .byte 31,0
 0004 1D1A              .byte 29,26
 0006 1700              .byte 23,0
 0008 15                .byte 21
 0009                   .dbsym e music_key _music_key A[9:9]kc
                        .area text(rom, con, rel)
 005A                   .dbfile C:\DOCUME~1\Administrator\桌面\AVR程序\电子琴\dianziqin.c
 005A                   .dbfunc e scan_key _scan_key fc
 005A           ;         intKey -> R22
 005A           ;              i -> R20
 005A           ;            tmp -> R10
                        .even
 005A           _scan_key::
 005A 0E940000          xcall push_xgsetF00C
 005E                   .dbline -1
 005E                   .dbline 12
 005E           ; /*模拟电子琴,0、1、2、4、5、6、8 分别模拟do re mi fa so la xi*/
 005E           ; 
 005E           ; #include <iom128v.h>
 005E           ; #include <macros.h>
 005E           ; #include "delay.h"
 005E           ; 
 005E           ; char count=0x00;
 005E           ; char sound_signal;//定义音符大小 
 005E           ; char sound_pace;//定义节拍大小 
 005E           ; const char music_key[]={0x27,0x23,0x1f,0x00,0x1d,0x1a,0x17,0x00,0x15};
 005E           ; char scan_key()
 005E           ; {
 005E                   .dbline 13
 005E           ;  char i=0;
 005E 4427              clr R20
 0060                   .dbline 14
 0060           ;  char tmp=0x00;
 0060 AA24              clr R10
 0062                   .dbline 15
 0062           ;  char intKey=0x00;
 0062 6627              clr R22
 0064                   .dbline 16
 0064           ;  DDRB=0x8f;
 0064 8FE8              ldi R24,143
 0066 87BB              out 0x17,R24
 0068                   .dbline 17
 0068           ;  PORTB=0xf8;
 0068 88EF              ldi R24,248
 006A 88BB              out 0x18,R24
 006C                   .dbline 19
 006C           ;   
 006C           ;  for(i=0;i<3;i++)
 006C 5AC0              xjmp L24
 006E           L21:
 006E                   .dbline 20
 006E           ;  {
 006E                   .dbline 21
 006E           ;  PORTB=~(1<<i);
 006E 01E0              ldi R16,1
 0070 142F              mov R17,R20
 0072 0E940000          xcall lsl8
 0076 202E              mov R2,R16
 0078 2094              com R2
 007A 28BA              out 0x18,R2
 007C                   .dbline 22
 007C           ;  delay(10);    //等待低电平稳定
 007C 0AE0              ldi R16,10
 007E 10E0              ldi R17,0
 0080 C9DF              xcall _delay
 0082                   .dbline 23
 0082           ;  tmp=PINB&0xf0;
 0082 86B3              in R24,0x16
 0084 807F              andi R24,240
 0086 A82E              mov R10,R24
 0088                   .dbline 24
 0088           ;  if(tmp!=0xf0)  //有键按下,延时10ms去抖
 0088 803F              cpi R24,240
 008A 31F0              breq L25
 008C           X4:
 008C                   .dbline 25
 008C           ;  {
 008C                   .dbline 26
 008C           ;  delay_ms(10);
 008C 0AE0              ldi R16,10
 008E 10E0              ldi R17,0
 0090 CFDF              xcall _delay_ms
 0092                   .dbline 27
 0092           ;  tmp=PINB&0xf0;
 0092 86B3              in R24,0x16
 0094 807F              andi R24,240
 0096 A82E              mov R10,R24
 0098                   .dbline 28
 0098           ;  }
 0098           L25:
 0098                   .dbline 29
 0098           ;  if(tmp!=0xf0) //确有键按下
 0098 8A2D              mov R24,R10
 009A 803F              cpi R24,240
 009C 09F4              brne X13
 009E 40C0              xjmp L27
 00A0           X13:
 00A0           X5:
 00A0                   .dbline 30
 00A0           ;  {
 00A0                   .dbline 31
 00A0           ;  tmp&=0xf0;
 00A0 807F              andi R24,240
 00A2 A82E              mov R10,R24
 00A4                   .dbline 32
 00A4           ;  switch(tmp)
 00A4 BB24              clr R11
 00A6 C501              movw R24,R10
 00A8 803B              cpi R24,176
 00AA E0E0              ldi R30,0
 00AC 9E07              cpc R25,R30
 00AE 39F1              breq L34
 00B0           X6:
 00B0 80EB              ldi R24,176
 00B2 8A15              cp R24,R10
 00B4 9B05              cpc R25,R11
 00B6 34F0              brlt L37
 00B8           X7:
 00B8           L36:
 00B8 C501              movw R24,R10
 00BA 8037              cpi R24,112
 00BC E0E0              ldi R30,0
 00BE 9E07              cpc R25,R30
 00C0 29F1              breq L35
 00C2           X8:
 00C2 2BC0              xjmp L29
 00C4           L37:
 00C4 C501              movw R24,R10
 00C6 803D              cpi R24,208
 00C8 E0E0              ldi R30,0
 00CA 9E07              cpc R25,R30
 00CC 89F0              breq L33
 00CE           X9:

⌨️ 快捷键说明

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