当前位置:网站首页>Stc-b learning board buzzer plays music 2.0
Stc-b learning board buzzer plays music 2.0
2022-07-06 15:00:00 【Wuhu hanjinlun】
First, popularize some music theory knowledge
a key signature - Musically, it refers to the symbol used to determine the height of the tonic of a music .
Obviously, an octave has 12 A semitone .
A、B、C、D、E、F、G. After the research of sonologists , All over the world, these letters are used to indicate fixed pitch . such as ,A This sound , The standard pitch is vibration per second 440 Zhou .
There are usually in the upper left corner of a song's notation 1=A or 1=B Things like that , So-called 1=A, That is to say , The of this song “ transfer ” Sing the same A As high as , People also call this song A Tune a song , Or call “ sing A transfer ”.1=C, That is to say , The of this song “ transfer ” Sing the same C As high as , Or say “ The song is sung C transfer ”. The same is “ transfer ”, Different tunes sing differently .
As a general rule , The music played by single chip microcomputer is basically single tone frequency , It does not contain the harmonic frequency of the corresponding amplitude , In other words, you can't play a variety of timbres like an electronic organ . Therefore, the single-chip microcomputer only needs to make clear two concepts , That is to say “ tone ” and “ Rhythm ”. Tone indicates how often a note is sung , The beat indicates how long a note is sung .
tone
In music, it is called “ tone ”, In fact, we often say “ pitch ”. In music, the center is often C At the top of the A Set the pitch as standard , Its frequency f=440Hz. When the frequency difference between two sound signals is twice , That is to say f2=2f1 when , said f2 Than f1 One octave higher , In music 1(do) And ,2( Come on ) And …… The difference is exactly one octave , In musicology, it is called an octave difference . In an octave , Yes 12 A semitone .
With 1—i Take the eight tone area as an example ,12 A halftone is :1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5 One #5、#5—6、6—#6、#6—7、7—i. this 12 The division of a scale is basically divided by logarithm . If we only know the pitch of these twelve notes , That is, the frequency of its basic tone , We can get the frequencies of the basic tones of other notes according to the relationship between octaves .
C The frequency and count value of each note are shown in the figure 1 Shown
Knowing the frequency of a note , How to make the SCM send out the sound of the corresponding frequency ? As a general rule , The commonly used method is to interrupt regularly through the timer of the single chip microcomputer , Set the corresponding buzzer on the MCU I/O Take the wrong way back and forth , Or reset back and forth , Set up , So that the buzzer makes a sound , In order to make the single-chip microcomputer send out sounds of different frequencies , We only need to set the timer to different timing values to achieve . So how to determine the timing value of the timer corresponding to a frequency ?
In standard pitch A For example :
A The frequency of f = 440 Hz, The corresponding period is :
T = 1/ f = 1/440 =2272μs
It can be seen from the above figure , The corresponding buzzer on the MCU I/O The time to reverse the mouth back and forth should be :
t = T/2 = 2272/2 = 1136μs
At this time t That is, the interrupt trigger time of the timer on the MCU . In general , When the single chip computer plays music , Its timer works in 1, It takes the twelve division signal of the oscillator as the counting pulse . Set the oscillator frequency as f0, Then the preset initial value of the timer is determined by the following formula :
t = 12 *(TALL – THL)/ f0
In style TALL = 2**16 = 65536,THL It is the initial value of the count to be determined by the timer . Therefore, the initial value of the high and low counters of the timer is :
TH = THL / 256 = ( TALL – t* f0/12) / 256
TL = THL % 256 = ( TALL – t* f0/12) %256
take t=1136μs Substitute the above two expressions ( Be careful : The unit conversion of time and frequency shall be consistent during calculation ), You can find the standard pitch A In the single-chip crystal oscillator frequency f0=12Mhz, The timer is working 1 The preset initial value of the timer high and low counter under is :
TH440Hz = (65536 – 1136 * 12/12) /256 = FBH
TL440Hz = (65536 – 1136 * 12/12)%256 = 90H
According to the above solution , We can calculate the preset initial value of the counter corresponding to other tones .
time
The beat of notes can be illustrated by examples . In a piece of music , We often see such expressions , Such as 1=C3/4 、1=G4/4…… wait , here 1=C,1=G A tune that represents a score , It has a lot to do with the tone we talked about earlier ,3/4、4/4 It is used to express the beat . Take an example to illustrate , It means that in the score, the beat is a quarter note , Each summary has three beats . such as :
among 1 、2 For one shot ,3、4、5 For one shot ,6 For one shot, three shots in total .1 、2 Is half the length of a quarter note , It's an octave long ,3、4 Is half the length of an octave , That is, the sixteenth note is long ,5 Is half the length of a quarter note , It's an octave long ,6 The duration of is quarter note long . So how long should we sing for a shot ? As a general rule , If the music has no special instructions , The duration of one shot is about 400—500ms . We take the duration of one shot as 400ms For example , Then when the beat is a quarter note , The duration of a quarter note is 400ms, The duration of an octave is 200ms, The duration of the sixteenth note is 100ms.
The method of cycle delay can be used to control how long a note is sung on the single chip microcomputer . First , We determine a basic time delay program , For example, take the duration of the sixteenth note as the basic delay time , that , For a note , If it is a sixteenth note , Then you only need to call the delay program once , If it's an octave , Then you only need to call the secondary delay program , If it's a quarter note , You only need to call the delay program four times , By analogy .
Through the above method of determining the tone and beat of a note , We can play music on the single chip computer . The specific implementation method is : Transform the tone and beat of each note in the score into corresponding tone parameters and beat parameters , Make them into data tables , Store in memory , Take out the relevant parameters of a note through the program , Play the note , After the note is sung , Then take out the relevant parameters of the next note ……, So until the last note is played , You can also play the whole song repeatedly as needed . in addition , For the rest in the music , Generally, its tone parameter is set to FFH,FFH, Its beat parameters are consistent with those of other notes , The beat parameter for the end of the song is 00H To express .
Here I use the code modified by the senior , It can light up different notes when playing music LED The function of the lamp ( It may have the function of chicken ribs , After all, it hurts your eyes ), And support longer music playback , But one button is missing key2 Switch song functions , If you want to add a code to switch the function of songs , You can refer to Last one , Add a button 2 Of I/O Interface , stay playmusic Function according to gequ To choose different songs , Finally, add a button 2 External interrupt response function .
The code is as follows :
/********************** myMusic Music playing model :IAP15F2K60S2 Main frequency :12MHz ************************/
#include <STC15F2K60S2.h>
#define uint unsigned int
#define uchar unsigned char
/*--------- Pin alias definition ---------*/
sbit sbtBeep = P3 ^ 4; // Buzzer
sbit key1 = P3 ^ 2; // Key 1
sbit sbtLedSel = P2 ^ 3; // Nixie tube and LED Lamp switching pin
/*--------- Variable definitions ---------*/
uchar code arrLed[] = {
0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; // LED value
uchar ucTimerH, ucTimerL; // Define the reload value of the timer
bit flag; // Sign a , Pause or play
uchar code arrMusic[] = // Music code , The format is : note , Rhythm
{
// The ten symbols of notes are low, medium and high octaves ,1 Represents high octave ,2 Represents the middle octave ,3 Represents high octave
// A bit represents a note of a simplified spectrum , for example 0x15 Represents a low octave S0,0x21 Represents the middle octave DO.
// The beat represents the length , for example :0x10 Represents a shot ,0x20 For two shots ,0x08 representative 1/2 pat
};
uchar code arrMusicToTimerNum[] =
{
// This array data is the reload value of each note in the timer , The first column is high , The second column is low
0xf8, 0x8c, // Low octave , low 1
0xf9, 0x5b,
0xfa, 0x15, // low 3
0xfa, 0x67,
0xfb, 0x04, // low 5
0xfb, 0x90,
0xfc, 0x0c, // low 7
0xfc, 0x44, // The central C transfer
0xfc, 0xac, // in 2
0xfd, 0x09,
0xfd, 0x34, // in 4
0xfd, 0x82,
0xfd, 0xc8, // in 6
0xfe, 0x06,
0xfe, 0x22, // High octave , high 1
0xfe, 0x56,
0xfe, 0x85, // high 3
0xfe, 0x9a,
0xfe, 0xc1, // high 5
0xfe, 0xe4,
0xff, 0x03, // high 7
0xff, 0xff};
/*--------- Delay subfunction ---------*/
void DelayMs(uint xms)
{
uint i, j;
for (i = xms; i > 0; i--)
for (j = 124; j > 0; j--)
;
}
/*--------- Addressing subfunction ---------*/
// Take out tem The notes are arrMusicToTimerNum The position value in the array
uchar GetPosition(uchar tem)
{
uchar ucBase, ucOffset, ucPosition; // Define the tune 、 Notes and positions
ucBase = tem / 16; // high 4 Bit is the tune value , Base address
ucOffset = tem % 16; // low 4 Bit is a note , Offset
if (ucOffset == 0) // When the note is 0 when , Location is 42
{
P0 = 0x00;
return 42;
}
// Light up the corresponding number of LED
P0 = arrLed[ucOffset];
if (ucBase == 1) // When the tune value is 1 when , It's a low octave , The base address is 0
ucBase = 0;
else if (ucBase == 2) // When the tune value is 2 when , It's the middle octave , The base address is 14
ucBase = 14;
else if (ucBase == 3) // When the tune value is 3 when , It's a high octave , The base address is 28
ucBase = 28;
// Add the offset through the base address , You can locate this note at arrMusicToTimerNum Position in array
ucPosition = ucBase + (ucOffset - 1) * 2;
return ucPosition; // Return this location value
}
/*--------- Play music function ---------*/
void PlayMusic()
{
// ucNoteTmp For notes ,ucRhythmTmp For the beat
uchar ucNoteTmp, ucRhythmTmp, tem;
// Here is the uchar Type changed to uint type , otherwise i The maximum is 255, Can only support 128 A note , I can't even finish it 《 Internationale 》 The melody of
uint i = 0;
while (1)
{
if (flag == 1) // Play status
{
ucNoteTmp = arrMusic[i];
if (ucNoteTmp == 0x00) // If you come across an end , Time delay 1 second , Go back to the beginning and do it again
{
i = 0;
P0 = 0x00;
sbtBeep = 0;
DelayMs(1000);
}
else // In other cases, take notes and beats
{
tem = GetPosition(arrMusic[i]); // Take out the current note at arrMusicToTimerNum The position value in the array
ucTimerH = arrMusicToTimerNum[tem]; // Reload the timer corresponding to the note to ucTimerH and ucTimerL
ucTimerL = arrMusicToTimerNum[tem + 1];
i++;
TH0 = ucTimerH; // hold ucTimerH and ucTimerL Assign timer
TL0 = ucTimerL;
ucRhythmTmp = arrMusic[i]; // Get the beat
i++;
TR0 = 1; // Turn on the timer 1
if (ucTimerH == ucTimerL) // Stop and turn off the timer directly
TR0 = 0;
DelayMs(ucRhythmTmp * 300); // Wait for the beat to complete , adopt P3^4 Audio output port
TR0 = 0; // Turn off timer 1
sbtBeep = 0;
}
}
else
while (flag != 1) // Pause
;
}
}
/*--------- Initialize sub functions ---------*/
// The function is to configure IO mouth
void InitSys()
{
P0M0 = 0xff;
P0M1 = 0x00;
P2M0 = 0x08;
P2M1 = 0x00;
P3M0 = 0x10;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
sbtLedSel = 1;
}
/*--------- Timer 0 Initialize sub functions ---------*/
void InitT0()
{
TMOD = 0x01;
TH0 = 0xD8;
TL0 = 0xEF;
IE = 0x87; // 1000 0111 EA=1,EX0=1,ET0=1,EX1=0;
IP = 0x02; // 0000 0010 PT0=1; Timer 0 High priority
TR0 = 0;
sbtBeep = 0;
}
/*--------- The main function ---------*/
void main()
{
InitSys();
InitT0();
P0 = 0x00;
key1 = 1;
flag = 0;
PlayMusic();
}
/*--------- Timer 0 Interrupt handling function ---------*/
// Reinstall the value , And put sbtBeep Value reversal , Generate square waves
void T0_Process() interrupt 1 // The timer controls the frequency
{
TH0 = ucTimerH;
TL0 = ucTimerL;
sbtBeep = ~sbtBeep;
}
/*--------- Key 1 Interrupt handling function ---------*/
// Copied from other cases
void ex1() interrupt 0
{
DelayMs(5);
if (key1 == 0) // Judge key1 Whether to press
{
DelayMs(5);
if (key1 == 0)
{
while (!key1)
;
flag = ~flag; // The playback interrupt bit is reversed , Play or pause
}
}
}
Just put the
uchar code arrMusic[] = // Music code , The format is : note , Rhythm
{
// The ten symbols of notes are low, medium and high octaves ,1 Represents high octave ,2 Represents the middle octave ,3 Represents high octave
// A bit represents a note of a simplified spectrum , for example 0x15 Represents a low octave S0,0x21 Represents the middle octave DO.
// The beat represents the length , for example :0x10 Represents a shot ,0x20 For two shots ,0x08 representative 1/2 pat
};
Fill in the music code of the song you want , And then use keil Compile the generated hex After downloading the file to the MCU, you can play the song .
Below I write some music codes of songs , Directly paste it into the above array to use
Lone brave
0x16,0x08,0x17,0x08,
0x21,0x08,0x22,0x08,
0x17,0x08,0x21,0x08,
0x21,0x10,0x21,0x08,
0x17,0x08,0x21,0x08,
0x22,0x08,0x17,0x08,
0x21,0x08,0x21,0x10,
0x21,0x08,0x22,0x08,
0x23,0x08,0x22,0x08,
0x23,0x08,0x22,0x08,
0x23,0x10,0x23,0x08,
0x22,0x08,0x23,0x10,
0x25,0x10,0x23,0x10,
0x16,0x08,0x17,0x08,
0x21,0x08,0x22,0x08,
0x17,0x08,0x21,0x08,
0x21,0x10,0x21,0x08,
0x17,0x08,0x21,0x08,
0x22,0x08,0x17,0x08,
0x21,0x08,0x21,0x10,
0x21,0x08,0x22,0x08,
0x23,0x08,0x22,0x08,
0x23,0x08,0x22,0x08,
0x23,0x10,0x23,0x08,
0x22,0x08,0x23,0x10,
0x25,0x10,0x23,0x10,
0x25,0x10,0x23,0x14,
0x25,0x08,0x23,0x14,
0x25,0x08,0x23,0x08,
0x25,0x08,0x26,0x08,
0x23,0x08,0x25,0x10,
0x25,0x08,0x23,0x14,
0x25,0x08,0x23,0x14,
0x25,0x08,0x23,0x08,
0x25,0x08,0x26,0x08,
0x23,0x08,0x25,0x10,
0x25,0x08,0x25,0x08,
0x23,0x08,0x22,0x08,
0x22,0x10,0x22,0x10,
0x21,0x08,0x23,0x08,
0x23,0x08,0x22,0x08,
0x22,0x10,0x22,0x10,
0x21,0x08,0x21,0x08,
0x16,0x20,0x25,0x08,
0x25,0x08,0x23,0x08,
0x22,0x08,0x22,0x10,
0x22,0x10,0x21,0x08,
0x23,0x08,0x23,0x08,
0x22,0x08,0x22,0x10,
0x22,0x10,0x21,0x08,
0x21,0x08,0x16,0x20,
0x00
a sunny day
0x25,0x08,
0x25,0x08,
0x21,0x08,
0x21,0x10,
0x22,0x08,
0x23,0x08,
0x25,0x08,
0x25,0x08,
0x21,0x08,
0x21,0x08,
0x22,0x04,
0x23,0x04,
0x22,0x04,
0x21,0x04,
0x15,0x08,
0x25,0x08,
0x25,0x08,
0x21,0x08,
0x21,0x10,
0x22,0x08,
0x23,0x08,
0x23,0x10,
0x22,0x04,
0x23,0x04,
0x24,0x04,
0x23,0x04,
0x22,0x04,
0x24,0x04,
0x23,0x04,
0x22,0x04,
0x21,0x08,
0x15,0x08,
0x21,0x08,
0x21,0x08,
0x23,0x08,
0x24,0x08,
0x23,0x08,
0x22,0x08,
0x21,0x04,
0x22,0x04,
0x23,0x08,
0x23,0x08,
0x23,0x08,
0x23,0x08,
0x22,0x04,
0x23,0x04,
0x22,0x08,
0x21,0x10,
0x15,0x08,
0x21,0x08,
0x22,0x08,
0x23,0x08,
0x24,0x08,
0x23,0x08,
0x22,0x08,
0x21,0x04,
0x22,0x04,
0x13,0x08,
0x23,0x08,
0x23,0x08,
0x23,0x08,
0x22,0x04,
0x23,0x04,
0x22,0x08,
0x21,0x14,
0x17,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x17,0x08,
0x21,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x17,0x08,
0x21,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x17,0x08,
0x21,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x25,0x04,
0x25,0x08,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x25,0x08,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x25,0x04,
0x24,0x04,
0x23,0x04,
0x23,0x04,
0x23,0x14,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x16,0x04,
0x17,0x04,
0x21,0x04,
0x25,0x04,
0x24,0x04,
0x23,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x10,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x21,0x04,
0x23,0x08,
0x21,0x08,
0x16,0x04,
0x17,0x04,
0x21,0x04,
0x25,0x04,
0x24,0x04,
0x23,0x04,
0x21,0x04,
0x22,0x04,
0x22,0x14,
0x00, 0x00
Nocturne
0x16,0x04,
0x17,0x04,
0x21,0x08,
0x21,0x04,
0x21,0x08,
0x21,0x08,
0x17,0x08,
0x23,0x04,
0x23,0x04,
0x23,0x10,
0x26,0x08,
0x26,0x04,
0x26,0x04,
0x26,0x04,
0x25,0x08,
0x24,0x04,
0x25,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x10,
0x24,0x08,
0x24,0x04,
0x24,0x04,
0x24,0x08,
0x25,0x08,
0x24,0x0c,
0x24,0x04,
0x23,0x08,
0x22,0x08,
0x23,0x08,
0x22,0x04,
0x21,0x04,
0x21,0x08,
0x17,0x08,
0x21,0x10,
0x17,0x10,
0x21,0x0c,
0x21,0x04,
0x21,0x08,
0x21,0x08,
0x17,0x08,
0x23,0x04,
0x23,0x04,
0x23,0x10,
0x26,0x08,
0x26,0x04,
0x26,0x04,
0x26,0x04,
0x15,0x08,
0x24,0x04,
0x25,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x10,
0x24,0x08,
0x24,0x04,
0x24,0x04,
0x24,0x08,
0x14,0x08,
0x23,0x08,
0x22,0x04,
0x17,0x04,
0x17,0x08,
0x21,0x08,
0x16,0x20,
0x16,0x10,
0x17,0x10,
0x21,0x08,
0x21,0x04,
0x21,0x08,
0x21,0x08,
0x17,0x08,
0x23,0x04,
0x23,0x04,
0x23,0x10,
0x26,0x08,
0x26,0x04,
0x26,0x04,
0x26,0x04,
0x25,0x08,
0x24,0x04,
0x25,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x10,
0x24,0x08,
0x24,0x04,
0x24,0x04,
0x24,0x08,
0x25,0x08,
0x23,0x0c,
0x21,0x04,
0x23,0x08,
0x22,0x08,
0x21,0x08,
0x21,0x04,
0x17,0x04,
0x17,0x08,
0x21,0x08,
0x17,0x10,
0x16,0x10,
0x21,0x0c,
0x21,0x04,
0x21,0x08,
0x21,0x08,
0x17,0x08,
0x23,0x04,
0x23,0x04,
0x23,0x10,
0x26,0x08,
0x26,0x04,
0x26,0x04,
0x26,0x04,
0x15,0x08,
0x24,0x04,
0x25,0x08,
0x21,0x04,
0x21,0x04,
0x21,0x10,
0x24,0x08,
0x24,0x04,
0x24,0x04,
0x24,0x08,
0x14,0x08,
0x23,0x08,
0x22,0x04,
0x17,0x04,
0x17,0x08,
0x21,0x08,
0x16,0x20,
Beyond light years
0x23,0x08,
0x23,0x08,
0x22,0x08,
0x22,0x08,
0x21,0x08,
0x21,0x08,
0x17,0x08,
0x17,0x08,
0x21,0x08,
0x21,0x10,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x22,0x08,
0x23,0x10,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x21,0x08,
0x22,0x18,
0x23,0x08,
0x23,0x08,
0x22,0x08,
0x22,0x08,
0x21,0x08,
0x21,0x08,
0x17,0x08,
0x17,0x08,
0x21,0x08,
0x21,0x04,
0x17,0x04,
0x16,0x08,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x22,0x08,
0x23,0x10,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x15,0x08,
0x21,0x08,
0x22,0x18,
0x16,0x04,
0x17,0x04,
0x16,0x04,
0x17,0x04,
0x21,0x04,
0x17,0x14,
0x21,0x04,
0x22,0x04,
0x23,0x04,
0x24,0x04,
0x23,0x08,
0x16,0x04,
0x16,0x04,
0x17,0x04,
0x16,0x04,
0x17,0x04,
0x21,0x04,
0x17,0x14,
0x21,0x04,
0x22,0x04,
0x23,0x04,
0x24,0x04,
0x23,0x08,
0x21,0x04,
0x22,0x04,
0x23,0x04,
0x24,0x04,
0x23,0x08,
0x21,0x04,
0x22,0x04,
0x23,0x04,
0x24,0x04,
0x23,0x08,
0x22,0x08,
0x21,0x08,
0x21,0x08,
0x21,0x08,
0x21,0x08,
0x22,0x08,
0x22,0x08,
0x23,0x08,
0x23,0x0c,
0x25,0x04,
0x25,0x08,
0x26,0x08,
0x26,0x18,
0x21,0x08,
0x22,0x08,
0x22,0x08,
0x23,0x08,
0x23,0x08,
0x25,0x08,
0x25,0x0c,
0x21,0x04,
0x23,0x08,
0x22,0x08,
0x22,0x18,
0x21,0x08,
0x21,0x08,
0x21,0x08,
0x22,0x08,
0x22,0x08,
0x23,0x08,
0x23,0x0c,
0x25,0x04,
0x25,0x08,
0x26,0x08,
0x26,0x18,
0x21,0x08,
0x22,0x08,
0x22,0x08,
0x23,0x08,
0x23,0x08,
0x25,0x08,
0x25,0x0c,
0x21,0x04,
0x23,0x08,
0x22,0x08,
0x22,0x18,
0x24,0x08,
0x23,0x08,
0x22,0x08,
0x21,0x08,
0x21,0x04,
0x25,0x04,
0x25,0x08,
0x25,0x08,
0x25,0x08,
0x21,0x0c,
0x21,0x04,
0x21,0x08,
0x16,0x10,
0x24,0x08,
0x23,0x08,
0x22,0x08,
0x21,0x08,
0x21,0x04,
0x25,0x04,
0x25,0x08,
0x25,0x08,
0x25,0x08,
0x21,0x0c,
0x21,0x04,
0x21,0x08,
0x17,0x08,
0x22,0x18,
0x24,0x08,
0x23,0x08,
0x22,0x04,
0x21,0x04,
0x16,0x08,
0x21,0x04,
0x25,0x04,
0x25,0x08,
0x25,0x08,
0x25,0x08,
0x21,0x0c,
0x21,0x04,
0x21,0x08,
0x16,0x10,
0x24,0x08,
0x23,0x08,
0x22,0x04,
0x21,0x04,
0x16,0x08,
0x21,0x04,
0x25,0x04,
0x25,0x08,
0x25,0x08,
0x25,0x08,
0x21,0x0c,
0x21,0x04,
0x21,0x08,
0x17,0x08,
0x22,0x18,
see you again
0x25,0x08,
0x32,0x08,
0x31,0x08,
0x23,0x08,
0x23,0x08,
0x31,0x04,
0x32,0x04,
0x33,0x04,
0x32,0x04,
0x31,0x04,
0x32,0x04,
0x25,0x08,
0x32,0x08,
0x31,0x08,
0x25,0x08,
0x25,0x08,
0x31,0x04,
0x32,0x04,
0x33,0x04,
0x32,0x04,
0x31,0x04,
0x32,0x04,
0x25,0x08,
0x32,0x08,
0x31,0x08,
0x25,0x08,
0x25,0x08,
0x31,0x04,
0x32,0x04,
0x33,0x04,
0x32,0x04,
0x31,0x04,
0x32,0x04,
0x25,0x08,
0x32,0x08,
0x31,0x08,
0x25,0x08,
0x25,0x08,
0x11,0x08,
0x13,0x08,
0x15,0x08,
0x16,0x08,
0x16,0x08,
0x16,0x08,
0x15,0x08,
0x15,0x04,
0x16,0x04,
0x11,0x04,
0x12,0x08,
0x12,0x08,
0x11,0x08,
0x13,0x08,
0x13,0x10,
0x13,0x04,
0x15,0x04,
0x16,0x08,
0x17,0x08,
0x16,0x08,
0x15,0x08,
0x13,0x08,
0x12,0x08,
0x12,0x08,
0x11,0x08,
0x12,0x08,
0x12,0x08,
0x13,0x08,
0x11,0x08,
0x11,0x08,
0x13,0x04,
0x13,0x04,
0x15,0x04,
0x16,0x08,
0x16,0x08,
0x15,0x08,
0x15,0x08,
0x15,0x04,
0x16,0x10,
0x11,0x04,
0x12,0x08,
0x12,0x08,
0x11,0x08,
0x13,0x08,
0x12,0x10,
0x13,0x08,
0x15,0x08,
0x26,0x08,
0x21,0x08,
0x22,0x08,
0x23,0x08,
0x22,0x08,
0x21,0x08,
0x16,0x08,
0x21,0x08,
0x22,0x08,
0x22,0x04,
0x21,0x08,
0x21,0x10,
0x16,0x08,
0x21,0x08,
0x22,0x08,
0x22,0x04,
0x21,0x08,
0x21,0x10,
0x00,0
a very ugly person
0x25,0x06,
0x26,0x06,
0x26,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x0c,
0x21,0x06,
0x22,0x06,
0x23,0x06,
0x23,0x06,
0x23,0x14,
0x25,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x06,
0x25,0x06,
0x31,0x06,
0x26,0x0c,
0x21,0x06,
0x22,0x06,
0x23,0x06,
0x25,0x06,
0x23,0x14,
0x25,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x0c,
0x21,0x06,
0x22,0x06,
0x23,0x06,
0x23,0x06,
0x23,0x06,
0x23,0x06,
0x25,0x1d,
0x25,0x0c,
0x21,0x06,
0x22,0x06,
0x22,0x18,
0x25,0x06,
0x26,0x06,
0x26,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x0c,
0x21,0x06,
0x22,0x06,
0x23,0x06,
0x23,0x06,
0x23,0x0c,
0x25,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x06,
0x25,0x06,
0x31,0x06,
0x26,0x0c,
0x21,0x06,
0x22,0x06,
0x23,0x06,
0x25,0x06,
0x23,0x0c,
0x25,0x06,
0x25,0x06,
0x26,0x06,
0x26,0x06,
0x25,0x06,
0x36,0x06,
0x26,0x0c,
0x21,0x06,
0x22,0x06,
0x23,0x06,
0x23,0x06,
0x33,0x06,
0x23,0x06,
0x25,0x1d,
0x25,0x06,
0x24,0x06,
0x24,0x06,
0x33,0x06,
0x24,0x06,
0x23,0x06,
0x24,0x10,
0x25,0x06,
0x24,0x06,
0x23,0x06,
0x34,0x06,
0x23,0x06,
0x22,0x06,
0x21,0x06,
0x23,0x0c,
0x23,0x0c,
0x33,0x0c,
0x24,0x06,
0x23,0x06,
0x23,0x18,
0x00,0
边栏推荐
- Four methods of exchanging the values of a and B
- flask实现强制登陆
- 数据库多表链接的查询方式
- “Hello IC World”
- The salary of testers is polarized. How to become an automated test with a monthly salary of 20K?
- Statistics 8th Edition Jia Junping Chapter XIII Summary of knowledge points of time series analysis and prediction and answers to exercises after class
- 《统计学》第八版贾俊平第二章课后习题及答案总结
- Oracle foundation and system table
- Matplotlib绘图快速入门
- 王爽汇编语言详细学习笔记二:寄存器
猜你喜欢
Interview Essentials: what is the mysterious framework asking?
What level do 18K test engineers want? Take a look at the interview experience of a 26 year old test engineer
Express
[HCIA continuous update] advanced features of routing
Es full text index
CSAPP家庭作业答案7 8 9章
Fundamentals of digital circuits (II) logic algebra
Statistics, 8th Edition, Jia Junping, Chapter VIII, summary of knowledge points of hypothesis test and answers to exercises after class
数字电路基础(五)算术运算电路
C language do while loop classic Level 2 questions
随机推荐
数字电路基础(一)数制与码制
【指针】使用插入排序法将n个数从小到大进行排列
[issue 18] share a Netease go experience
函数:计算字符串中大写字母的个数
C language learning summary (I) (under update)
【指针】删除字符串s中的所有空格
c语言学习总结(上)(更新中)
Want to learn how to get started and learn software testing? I'll give you a good chat today
Quaternion -- basic concepts (Reprint)
【指针】求字符串的长度
[HCIA continuous update] working principle of static route and default route
High concurrency programming series: 6 steps of JVM performance tuning and detailed explanation of key tuning parameters
[oiclass] maximum formula
内网渗透之内网信息收集(三)
[pointer] counts the number of times one string appears in another string
Expanded polystyrene (EPS) global and Chinese markets 2022-2028: technology, participants, trends, market size and share Research Report
servlet中 servlet context与 session与 request三个对象的常用方法和存放数据的作用域。
【指针】求解最后留下的人
关于交换a和b的值的四种方法
Statistics 8th Edition Jia Junping Chapter IX summary of knowledge points of classified data analysis and answers to exercises after class