📄 speak.lst
字号:
__start:
__text_start:
46 EFCF LDI R28,0xFF
47 E1D0 LDI R29,0x10
48 BFCD OUT 0x3D,R28
49 BFDE OUT 0x3E,R29
4A 51CE SUBI R28,0x1E
4B 40D0 SBCI R29,0
4C EA0A LDI R16,0xAA
4D 8308 STD Y+0,R16
4E 2400 CLR R0
4F E0E0 LDI R30,0
50 E0F1 LDI R31,1
51 E011 LDI R17,1
52 30E0 CPI R30,0
53 07F1 CPC R31,R17
54 F011 BEQ 0x0057
55 9201 ST R0,Z+
56 CFFB RJMP 0x0052
57 8300 STD Z+0,R16
58 E8EC LDI R30,0x8C
59 E0F0 LDI R31,0
5A E0A0 LDI R26,0
5B E0B1 LDI R27,1
5C E010 LDI R17,0
5D E000 LDI R16,0
5E BF0B OUT 0x3B,R16
5F 38EC CPI R30,0x8C
60 07F1 CPC R31,R17
61 F021 BEQ 0x0066
62 95C8 LPM
63 9631 ADIW R30,1
64 920D ST R0,X+
65 CFF9 RJMP 0x005F
66 940E 007F CALL _main
_exit:
68 CFFF RJMP _exit
_s_ms:
m --> R20
t --> R16
69 934A ST R20,-Y
6A 935A ST R21,-Y
FILE: E:\产品\开发板\mega128-board\待完成\无源蜂鸣器\speak.c
(0001) //无源蜂鸣器试验
(0002) //产生间隔的di的响声
(0003) #include<iom16v.h>
(0004) #define uchar unsigned char
(0005) #define uint unsigned int
(0006)
(0007) //延时函数
(0008) void s_ms(unsigned int t)
(0009) {
(0010) uint m;
(0011) for(;t>1;t--)
6B C00B RJMP 0x0077
(0012) {
(0013) for(m=0;m<100;m++);
6C 2744 CLR R20
6D 2755 CLR R21
6E C002 RJMP 0x0071
6F 5F4F SUBI R20,0xFF
70 4F5F SBCI R21,0xFF
71 3644 CPI R20,0x64
72 E0E0 LDI R30,0
73 075E CPC R21,R30
74 F3D0 BCS 0x006F
75 5001 SUBI R16,1
76 4010 SBCI R17,0
77 E081 LDI R24,1
78 E090 LDI R25,0
79 1780 CP R24,R16
7A 0791 CPC R25,R17
7B F380 BCS 0x006C
7C 9159 LD R21,Y+
7D 9149 LD R20,Y+
7E 9508 RET
(0014) }
(0015) }
(0016)
(0017) //主函数
(0018) main()
(0019) {
(0020) uint i;
(0021) DDRC=0xff; //端口C为输出
_main:
i --> R20
7F EF8F LDI R24,0xFF
80 BB84 OUT 0x14,R24
(0022) PORTC=0xff;
81 BB85 OUT 0x15,R24
82 C014 RJMP 0x0097
(0023) while(1)
(0024) {
(0025) s_ms(12000); //间隔延时
83 EE00 LDI R16,0xE0
84 E21E LDI R17,0x2E
85 DFE3 RCALL _s_ms
(0026) for(i=0;i<500;i++) //在端口c产生音频信号
86 2744 CLR R20
87 2755 CLR R21
88 C00A RJMP 0x0093
(0027) {
(0028) PORTC|=0x80; //端口=1
89 9AAF SBI 0x15,7
(0029) s_ms(6); //延时
8A E006 LDI R16,6
8B E010 LDI R17,0
8C DFDC RCALL _s_ms
(0030) PORTC&=~0x80; //端口=0
8D 98AF CBI 0x15,7
(0031) s_ms(6);
FILE: <library>
8E E006 LDI R16,6
8F E010 LDI R17,0
90 DFD8 RCALL _s_ms
91 5F4F SUBI R20,0xFF
92 4F5F SBCI R21,0xFF
93 3F44 CPI R20,0xF4
94 E0E1 LDI R30,1
95 075E CPC R21,R30
96 F390 BCS 0x0089
97 CFEB RJMP 0x0083
98 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -