串口使用练习一
由上位机发送’1’给单片机时,蜂鸣器以400Hz频率发声,发‘2’时以200Hz频率发声,发‘3’时以100Hz频率发声,发‘4’时关闭蜂鸣器。
本实验使用锐志电子RZ-51/AVR V2.8单片机,不同单片机引脚可能不同。下面给出代码段,欢迎讨论。
#include《reg52.h》
#define uint unsigned int
#define uchar unsigned char
uint num;
uint temp;//用于记录num的变化
uchar a;
***it buzzer=P2^3;
void main()
{
TMOD=0x21;//定时器T1选择工作方式2
TH1=0xfd;
TL1=0xfd;//定时器T1装初值
TR1=1;
REN=1;//SOCN中开串行接受
SM0=0;
SM1=1;//SCON中设定定时器工作方式为1
EA=1;
ES=1;//IE中开串行口中断
buzzer=0;
num=0;
temp=0;
TH0=(65536-45972)/256;
TL0=(65536-45872)%256;
ET0=1;
TR0=1;
while(1)
{
switch(a)
{
case ‘1’:
temp++;
if(temp==4)
{
temp=0;
buzzer=~buzzer;
}
break;
case ‘2’:
num++;
temp++;
if(temp==2)
{
temp=0;
buzzer=~buzzer;
}
break;
case ‘3’:
num++;
temp++;
if(temp==1)
{
temp=0;
buzzer=~buzzer;
}
break;
default: break;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
}
void enter0() interrupt 1//50ms
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}
串口使用练习一
由上位机发送’1’给单片机时,蜂鸣器以400Hz频率发声,发‘2’时以200Hz频率发声,发‘3’时以100Hz频率发声,发‘4’时关闭蜂鸣器。
本实验使用锐志电子RZ-51/AVR V2.8单片机,不同单片机引脚可能不同。下面给出代码段,欢迎讨论。
#include《reg52.h》
#define uint unsigned int
#define uchar unsigned char
uint num;
uint temp;//用于记录num的变化
uchar a;
***it buzzer=P2^3;
void main()
{
TMOD=0x21;//定时器T1选择工作方式2
TH1=0xfd;
TL1=0xfd;//定时器T1装初值
TR1=1;
REN=1;//SOCN中开串行接受
SM0=0;
SM1=1;//SCON中设定定时器工作方式为1
EA=1;
ES=1;//IE中开串行口中断
buzzer=0;
num=0;
temp=0;
TH0=(65536-45972)/256;
TL0=(65536-45872)%256;
ET0=1;
TR0=1;
while(1)
{
switch(a)
{
case ‘1’:
temp++;
if(temp==4)
{
temp=0;
buzzer=~buzzer;
}
break;
case ‘2’:
num++;
temp++;
if(temp==2)
{
temp=0;
buzzer=~buzzer;
}
break;
case ‘3’:
num++;
temp++;
if(temp==1)
{
temp=0;
buzzer=~buzzer;
}
break;
default: break;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
}
void enter0() interrupt 1//50ms
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}
举报