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

📄 03buz.lst

📁 用AVR单片机做的一些程序,包括跑马灯显示,PWM产生,ADC转换等
💻 LST
字号:
__text_start:
__start:
    0046 EFCF      LDI	R28,0xFF
    0047 E1D0      LDI	R29,0x10
    0048 BFCD      OUT	0x3D,R28
    0049 BFDE      OUT	0x3E,R29
    004A 51C0      SUBI	R28,0x10
    004B 40D0      SBCI	R29,0
    004C EA0A      LDI	R16,0xAA
    004D 8308      STD	Y+0,R16
    004E 2400      CLR	R0
    004F E0E0      LDI	R30,0
    0050 E0F1      LDI	R31,1
    0051 E011      LDI	R17,1
    0052 30E0      CPI	R30,0
    0053 07F1      CPC	R31,R17
    0054 F011      BEQ	0x0057
    0055 9201      ST	R0,Z+
    0056 CFFB      RJMP	0x0052
    0057 8300      STD	Z+0,R16
    0058 E8EC      LDI	R30,0x8C
    0059 E0F0      LDI	R31,0
    005A E0A0      LDI	R26,0
    005B E0B1      LDI	R27,1
    005C E010      LDI	R17,0
    005D 38EC      CPI	R30,0x8C
    005E 07F1      CPC	R31,R17
    005F F021      BEQ	0x0064
    0060 95C8      LPM
    0061 9631      ADIW	R30,1
    0062 920D      ST	R0,X+
    0063 CFF9      RJMP	0x005D
    0064 940E008E  CALL	_main
_exit:
    0066 CFFF      RJMP	_exit
_delay_ms:
  a                    --> R20
  b                    --> R22
  i                    --> R16
    0067 940E00B1  CALL	push_gset2
FILE: E:\ICCAVR\project\AVRMEG~3\icc\003-BUZZ\main.c
(0001) /*
(0002) 实验三:
(0003) 	驱动无源蜂鸣器实验。
(0004) 	1、定时器实验,用定时器的CTC模式驱动无源蜂鸣器,是否输出由按键0控制。
(0005) 	2、内部1 M晶振,程序采用单任务方式,软件延时,驱动无源蜂鸣器由定时器硬件完成。
(0006) 	3、进行此实验请插上BUZ短路块。
(0007) 	4、此实验让大家了解定时器里面的CTC功能,从而可以利用它来产生频率信号。
(0008) 
(0009) 	AVR  mega128学习板
(0010) 	www.iccavr.com	阿发
(0011) 	23:03 2007-10-09
(0012) */
(0013) #include "iom128v.h"
(0014) 
(0015) /*延时函数*/
(0016) void delay_ms(unsigned char i) {
(0017) 
(0018) 	unsigned char a, b;
(0019) 	for (a = 0; a < i; a++) {
    0069 2744      CLR	R20
    006A C006      RJMP	0x0071
(0020) 		for (b = 1; b; b++);
    006B E061      LDI	R22,1
    006C C001      RJMP	0x006E
    006D 9563      INC	R22
    006E 2366      TST	R22
    006F F7E9      BNE	0x006D
    0070 9543      INC	R20
    0071 1740      CP	R20,R16
    0072 F3C0      BCS	0x006B
    0073 940E00A8  CALL	pop_gset2
    0075 9508      RET
(0021) 		}
(0022) }
(0023) 
(0024) /*IO口初始化函数*/
(0025) void io_init(void) {
(0026) 
(0027) 	DDRA = 0x00;										/*方向输入*/
_io_init:
    0076 2422      CLR	R2
    0077 BA2A      OUT	0x1A,R2
(0028) 	PORTA = 0xFF;										/*打开上拉*/
    0078 EF8F      LDI	R24,0xFF
    0079 BB8B      OUT	0x1B,R24
(0029) 	DDRB = 0x00;										/*方向输入*/
    007A BA27      OUT	0x17,R2
(0030) 	PORTB = 0xFF;										/*高电平*/
    007B BB88      OUT	0x18,R24
(0031) 	DDRC = 0x00;										/*不用的IO口建议设置为输入带上拉*/
    007C BA24      OUT	0x14,R2
(0032) 	PORTC = 0xFF;
    007D BB85      OUT	0x15,R24
(0033) 	DDRD = 0x00;
    007E BA21      OUT	0x11,R2
(0034) 	PORTD = 0xFF;
    007F BB82      OUT	0x12,R24
(0035) 	DDRE = 0x08;										/*设置蜂鸣器对应脚为输出*/
    0080 E088      LDI	R24,0x8
    0081 B982      OUT	0x02,R24
(0036) 	PORTE = 0xF7;										/*蜂鸣器脚输出低电平*/
    0082 EF87      LDI	R24,0xF7
    0083 B983      OUT	0x03,R24
(0037) 	DDRF = 0x00;
    0084 92200061  STS	0x61,R2
(0038) 	PORTF = 0xFF;
    0086 EF8F      LDI	R24,0xFF
    0087 93800062  STS	0x62,R24
(0039) 	DDRG = 0x00;
    0089 92200064  STS	0x64,R2
(0040) 	PORTG = 0xFF;
    008B 93800065  STS	0x65,R24
    008D 9508      RET
(0041) }
(0042) 
(0043) void main(void) {
(0044) 
(0045) 	io_init();
_main:
    008E DFE7      RCALL	_io_init
    008F C016      RJMP	0x00A6
(0046) 	while (1) {
(0047) 		if (!(PINE & (1 << PE0))) {						/*判断是否有按键按下*/
    0090 9908      SBIC	0x01,0
    0091 C014      RJMP	0x00A6
(0048) 			TCCR3A = 0x40;								/*设置定时器工作在CTC模式*/
    0092 E480      LDI	R24,0x40
    0093 9380008B  STS	0x8B,R24
(0049) 			TCCR3B = 0x09;
    0095 E089      LDI	R24,0x9
    0096 9380008A  STS	0x8A,R24
(0050) 			OCR3A =  1000;
    0098 EE88      LDI	R24,0xE8
    0099 E093      LDI	R25,3
    009A 93900087  STS	0x87,R25
    009C 93800086  STS	0x86,R24
(0051) 			delay_ms(200);								/*延时一段时间,保证蜂鸣器的最短工作时间*/
    009E EC08      LDI	R16,0xC8
    009F DFC7      RCALL	_delay_ms
(0052) 			
(0053) 			while (!(PINE & (1 << PE0)));				/*等待按键松开*/
    00A0 9B08      SBIS	0x01,0
    00A1 CFFE      RJMP	0x00A0
(0054) 			TCCR3A = 0x00;								/*关闭定时器*/
    00A2 2422      CLR	R2
    00A3 9220008B  STS	0x8B,R2
(0055) 			PORTE &= ~(1 << PE3);						/*人为将蜂鸣器控制脚置低*/
FILE: <library>
    00A5 981B      CBI	0x03,3
    00A6 CFE9      RJMP	0x0090
    00A7 9508      RET
pop_gset2:
    00A8 E0E2      LDI	R30,2
    00A9 940C00B7  JMP	pop
push_gset5:
    00AB 92FA      ST	R15,-Y
    00AC 92EA      ST	R14,-Y
push_gset4:
    00AD 92DA      ST	R13,-Y
    00AE 92CA      ST	R12,-Y
push_gset3:
    00AF 92BA      ST	R11,-Y
    00B0 92AA      ST	R10,-Y
push_gset2:
    00B1 937A      ST	R23,-Y
    00B2 936A      ST	R22,-Y
push_gset1:
    00B3 935A      ST	R21,-Y
    00B4 934A      ST	R20,-Y
    00B5 9508      RET
pop_gset1:
    00B6 E0E1      LDI	R30,1
pop:
    00B7 9149      LD	R20,Y+
    00B8 9159      LD	R21,Y+
    00B9 FDE0      SBRC	R30,0
    00BA 9508      RET
    00BB 9169      LD	R22,Y+
    00BC 9179      LD	R23,Y+
    00BD FDE1      SBRC	R30,1
    00BE 9508      RET
    00BF 90A9      LD	R10,Y+
    00C0 90B9      LD	R11,Y+
    00C1 FDE2      SBRC	R30,2
    00C2 9508      RET
    00C3 90C9      LD	R12,Y+
    00C4 90D9      LD	R13,Y+
    00C5 FDE3      SBRC	R30,3
    00C6 9508      RET
    00C7 90E9      LD	R14,Y+
    00C8 90F9      LD	R15,Y+
    00C9 9508      RET

⌨️ 快捷键说明

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