模块
LED
摁键
J5接bin,启动摁键。
-
P3^7 P3^6 P3^5 P3^4为输入引脚,默认为高电平。
-
P3^3 P3^2 P3^1 P3^0为判断引脚。
-
sbit S7 = P3^0;
sbit S6 = P3^1;
sbit S5 = P3^2;
sbit S4 = P3^3;
蜂鸣器
数码管
中断
-
初始化:
void int0() //中断T0,判断3^2引脚
{
EA=1; //中断总开关
EX0=1;
IT0=1; //置1时为下降沿触发、置0时为低电平触发
}void int1() //中断T1,判断3^3引脚
{
EA=1;
EX1=1; //T1中断开关
IT1=1;
} -
中断时实现功能的程序:
void int0_intfun() interrupt 0 using 1//输入中断执行的程序 (using 0到3是指寄存到哪个寄存器,可以不理会或不写)
{
unsigned int i;
for(i=0;i<7;i++)
{
P0=(0xfe<<i);
delay(50000);
delay(50000);
delay(50000);
}
}void int1_intfun() interrupt 2 using 1 //输入中断执行的程序
{
unsigned int i;
for(i=0;i<7;i++)
{
P0=(0xbf>>i);
delay(50000);
delay(50000);
delay(50000);
}
定时器
void Timer0Init()
{
EA=1; //总开关
TR0=1; //打开定时器
ET0=1; //允许定时器中断
TMOD=0X01; //选择工作方式
TL0 = 0x18;
**TH0 = 0xFC; ** //两者共同决定定时时长
}
void Timer0() interrupt 1
{
static unsigned int i;
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值 (用于重新计数,需与前面初始化相同的定时的初值)
i++;
if(i==1000) //计数一千次时执行下面程序
{
i=0; //归零,重新开始计数
P0=0x11; //用于实现的功能
}
}
I2C总线
功能
一、制造混乱——rand()函数
1.rand()可以产生1-100以内的随机整数。
2.产生[m,n]范围内的随机数num,可用:
int num=rand()%(n-m+1)+m;
例,产生[10,30]之间的随机数: