📄 buzzer.lst
字号:
__start:
__text_start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E6 CPI R30,0x66
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E00D2 CALL _main
_exit:
004A CFFF RJMP _exit
_speaData:
y --> Y+4
j --> Y+0
i --> R10
len --> R12
dat --> Y+16
004B 940E00DE CALL push_arg4
004D 940E01A6 CALL push_gset4
004F 9728 SBIW R28,0x8
0050 88CC LDD R12,Y+20
FILE: E:\ICC_H\SoftExt.H
(0001) /*********************************************************************
(0002) 微 雪 电 子 WaveShare http://www.waveShare.net
(0003)
(0004) 目 的: 建立AVR的软件提取库函数,增加各类补丁,方便系统程序移植
(0005)
(0006) 目标系统: 基于AVR
(0007)
(0008) 应用软件: ICCAVR
(0009)
(0010) 版 本: Version 1.0
(0011)
(0012) 圆版时间: 2005-06-25
(0013)
(0014) 开发人员: SEE(中文名不告诉你~怕你骂我)
(0015)
(0016) 说 明: 若用于商业用途,请保留此段文字或注明代码来源
(0017)
(0018) 深 圳 微 雪 电 子 保 留 所 有 的 版 权
(0019) *********************************************************************/
(0020)
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024)
(0025) ----------------------------------------------------------------------
(0026) 入口参数说明:
(0027)
(0028) ----------------------------------------------------------------------
(0029) 待定参数说明:
(0030)
(0031) ----------------------------------------------------------------------
(0032) 对外变量说明:
(0033)
(0034) ----------------------------------------------------------------------
(0035) 对外函数说明:
(0036)
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039)
(0040) #ifndef SoftExt_H
(0041) #define SoftExt_H
(0042)
(0043) #include <math.h>
(0044) #include <string.h>
(0045)
(0046) /* 兼容一般程序员的常用写法 */
(0047) typedef unsigned char uchar;
(0048) typedef unsigned int uint;
(0049) typedef unsigned long ulong;
(0050) typedef signed char schar;
(0051) typedef signed int sint;
(0052) typedef signed long slong;
(0053)
(0054) /* 为方便移植,建议使用下面写法 */
(0055) typedef unsigned char bool;
(0056) typedef unsigned char uint8;
(0057) typedef unsigned int uint16;
(0058) typedef unsigned long uint32;
(0059) typedef signed char sint8;
(0060) typedef signed int sint16;
(0061) typedef signed long sint32;
(0062) typedef signed char int8;
(0063) typedef signed int int16;
(0064) typedef signed long int32;
(0065)
(0066) /* 下面写法一般不推荐 */
(0067) //typedef unsigned char ubyte;
(0068) //typedef unsigned int uword;
(0069) //typedef unsigned long udword;
(0070) //typedef signed char sbyte;
(0071) //typedef signed int sword;
(0072) //typedef signed long sdword;
(0073)
(0074) /* 一般程序定义的默认值 */
(0075) //#define NULL 0
(0076) //#define EOF -1
(0077) //#define TRUE 1
(0078) //#define FALSE 0
(0079) //#define YES 1
(0080) //#define NO 0
(0081) //#define ON 1
(0082) //#define OFF 0
(0083) //#define ENABLE 1
(0084) //#define DISABLE 0
(0085) //#define CRR 1
(0086) //#define ERR 0
(0087) //#define RIGHT 1
(0088) //#define WRONG 0
(0089) //#define SUCCESS 1
(0090) //#define FAILURE 0
(0091) //#define PI 3.1415926 //3.1415926535897932
(0092)
(0093) /* 如果你手头上的RAM实在很紧,可考虑下面的define哦~ */
(0094) //#define _CALLOC(a) ( (a *)calloc(n,sizeof(a)) )
(0095) //#define _MALLOC(a) ( (a *)malloc(sizeof(a)) )
(0096) //#define _MIN(a,b) ( (a) < (b) ? (a) : (b) )
(0097) //#define _MAX(a,b) ( (a) > (b) ? (a) : (b) )
(0098) //#define _EXCHANGE(a,b) { int t; t=a; a=b; b=t; }
(0099) //#define _TOLOWER(c) ( (c)+32 )
(0100) //#define _TOUPPER(c) ( (c)-32 )
(0101)
(0102) //#ifndef BIT
(0103) //#define BIT(x) ( 1<<(x) )
(0104) //#endif
(0105)
(0106) /*--------------------------------------------------------------------
(0107) 函数全称:数据拆字
(0108) 函数功能:自己看~
(0109) 注意事项:D<=999999,C<=6
(0110) 提示说明:调用speaData(12,2),得到dataElem[0]=2,dataElem[0]=1
(0111) 输 入:
(0112) 返 回:无
(0113) --------------------------------------------------------------------*/
(0114) uint8 dataElem[6];
(0115) void speaData(uint32 dat,sint8 len)
(0116) {
(0117) uint8 i;
(0118) uint32 j,y;
(0119) for(i=0,j=1;i<len;i++)
0051 24AA CLR R10
0052 E041 LDI R20,1
0053 E050 LDI R21,0
0054 E060 LDI R22,0
0055 E070 LDI R23,0
0056 01FE MOVW R30,R28
0057 8340 STD Z+0,R20
0058 8351 STD Z+1,R21
0059 8362 STD Z+2,R22
005A 8373 STD Z+3,R23
005B C046 RJMP 0x00A2
(0120) {
(0121) y=dat/j;
005C 01FE MOVW R30,R28
005D 8020 LDD R2,Z+0
005E 8031 LDD R3,Z+1
005F 8042 LDD R4,Z+2
0060 8053 LDD R5,Z+3
0061 01FE MOVW R30,R28
0062 8860 LDD R6,Z+16
0063 8871 LDD R7,Z+17
0064 8882 LDD R8,Z+18
0065 8893 LDD R9,Z+19
0066 925A ST R5,-Y
0067 924A ST R4,-Y
0068 923A ST R3,-Y
0069 922A ST R2,-Y
006A 0183 MOVW R16,R6
006B 0194 MOVW R18,R8
006C 940E00E3 CALL div32u
006E 01FE MOVW R30,R28
006F 8304 STD Z+4,R16
0070 8315 STD Z+5,R17
0071 8326 STD Z+6,R18
0072 8337 STD Z+7,R19
(0122) dataElem[i]=y%10;
0073 E04A LDI R20,0xA
0074 E050 LDI R21,0
0075 E060 LDI R22,0
0076 E070 LDI R23,0
0077 01FE MOVW R30,R28
0078 8024 LDD R2,Z+4
0079 8035 LDD R3,Z+5
007A 8046 LDD R4,Z+6
007B 8057 LDD R5,Z+7
007C 937A ST R23,-Y
007D 936A ST R22,-Y
007E 935A ST R21,-Y
007F 934A ST R20,-Y
0080 0181 MOVW R16,R2
0081 0192 MOVW R18,R4
0082 940E00E5 CALL mod32u
0084 E680 LDI R24,0x60
0085 E090 LDI R25,0
0086 2DEA MOV R30,R10
0087 27FF CLR R31
0088 0FE8 ADD R30,R24
0089 1FF9 ADC R31,R25
008A 8300 STD Z+0,R16
(0123) j*=10;
008B 01FE MOVW R30,R28
008C 8020 LDD R2,Z+0
008D 8031 LDD R3,Z+1
008E 8042 LDD R4,Z+2
008F 8053 LDD R5,Z+3
0090 E04A LDI R20,0xA
0091 E050 LDI R21,0
0092 E060 LDI R22,0
0093 E070 LDI R23,0
0094 925A ST R5,-Y
0095 924A ST R4,-Y
0096 923A ST R3,-Y
0097 922A ST R2,-Y
0098 018A MOVW R16,R20
0099 019B MOVW R18,R22
009A 940E0154 CALL empy32s
009C 01FE MOVW R30,R28
009D 8300 STD Z+0,R16
009E 8311 STD Z+1,R17
009F 8322 STD Z+2,R18
00A0 8333 STD Z+3,R19
00A1 94A3 INC R10
00A2 14AC CP R10,R12
00A3 F408 BCC 0x00A5
00A4 CFB7 RJMP 0x005C
(0124) }
(0125) }
00A5 9628 ADIW R28,0x8
00A6 940E0184 CALL pop_gset4
00A8 9624 ADIW R28,4
00A9 9508 RET
_delay50us:
j --> R20
t --> R16
00AA 940E0187 CALL push_gset1
FILE: E:\ICC_H\HardExt.H
(0001) /*********************************************************************
(0002) 微 雪 电 子 WaveShare http://www.waveShare.net
(0003)
(0004) 目 的: 建立AVR的硬件提取库函数,增加各类补丁,方便移植
(0005)
(0006) 目标系统: 基于AVR
(0007)
(0008) 应用软件: ICCAVR
(0009)
(0010) 版 本: Version 1.0
(0011)
(0012) 圆版时间: 2005-06-25
(0013)
(0014) 开发人员: SEE(中文名不告诉你~怕你骂我)
(0015)
(0016) 说 明: 若用于商业用途,请保留此段文字或注明代码来源
(0017)
(0018) 深 圳 微 雪 电 子 保 留 所 有 的 版 权
(0019) *********************************************************************/
(0020)
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024)
(0025) ----------------------------------------------------------------------
(0026) 入口参数说明:
(0027)
(0028) ----------------------------------------------------------------------
(0029) 待定参数说明:
(0030)
(0031) ----------------------------------------------------------------------
(0032) 对外变量说明:
(0033)
(0034) ----------------------------------------------------------------------
(0035) 对外函数说明:
(0036)
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039)
(0040) #ifndef HardExt_H
(0041) #define HardExt_H
(0042)
(0043) #include <math.h>
(0044) #include <string.h>
(0045) #include <stdio.h>
(0046) #include <macros.h>
(0047) #include <eeprom.h>
(0048)
(0049) /* hard configs */
(0050) #ifndef flash
(0051) #define flash const
(0052) #endif
(0053)
(0054) #ifndef code
(0055) #define code const
(0056) #endif
(0057)
(0058) #ifndef NOP
(0059) #define NOP() asm("nop");
(0060) #endif
(0061)
(0062) /* io configs */
(0063) #define sbi(io,bit) ( io |= (1<<bit) ) //example: sbi(PORTA,0);sbi(DDRA,0);
(0064) #define cbi(io,bit) ( io &= ~(1<<bit) ) //example: cbi(PORTA,0);cbi(DDRA,0);
(0065) #define gbi(pin ,bit) ( pin & (1<<bit) ) //example: gbi(PINA,0);
(0066)
(0067) /* interrupt configs */
(0068) #define DIS_INT asm("sei")
(0069) #define EN_INT asm("cli")
(0070)
(0071) /* WDT configs */
(0072) #define WDT() asm("wdr")
(0073)
(0074) /* bit operation */
(0075) //#ifndef BIT
(0076) //#define BIT(x) ( 1<<(x) )
(0077) //#endif
(0078)
(0079) /* USART configs for 4 Mhz crystal */
(0080) //#define BAUD9600 25
(0081) //#define BAUD19000 12
(0082) //#define UART_TRAN_ON() UCR |= 0x08
(0083) //#define UART_TRAN_OFF() UCR &= ~0x08
(0084) //#define UART_RCV_ON() UCR |= 0x10
(0085) //#define UART_RCV_OFF() UCR &= ~0x10
(0086)
(0087) /*--------------------------------------------------------------------
(0088) 函数全称:50us 延时
(0089) 函数功能:当然是 50us延时 啦
(0090) 注意事项:基于7.3728M晶振,稍微有点误差
(0091) 提示说明:调用Delay50us(20),得到1ms延时
(0092) 输 入:
(0093) 返 回:无
(0094) --------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -