本帖最后由 材料2105李天乐 于 2022-1-22 12:21 编辑
分时复用时我在QQ群看到学长提到的
也看一些视频讲解 今天我就大致给大家说一下我想的思路 我也不知道这个是不是真的叫分时复用。 0'。!。'0
具体的项目明天我在补上
下面是大致框架: bit biu bit mee 我们先定义2个全局变量 这两个bit型变量只有1和0,两种状态 我就认为 biu为1时 我打开LED1 biu为0时我打开LED2 meee为1时我打开蜂鸣器,mee为0时我打开数码管
Timer0()定时0的模式2(8为自动重装)初始化 { TMOD =0x02 // TH0 = ;TL0= // 我们在这定义1ms吧 具体根据项目的需要进行计算 TR0 = 1; ET0 = 1 ; }
在中断0中 interrupt 1 unsigned char i=0 ;// 我们在这定义一个计数变量 i++;//进入一次中断(1ms)计数变量加1 if(i<=100) //100ms 后i 置为0 也就是 100ms一个循环 {
i=0;
}
if(i%2=1) //i%2=1是啥意思呢就是 i 是 2 的倍数 100中 有多少个2的倍数 50个 对吧 { // 也就是说i是2的倍数 我打开LED1 100ms/50=2ms 就是2ms我打开LED1
biu =1 //我要让biu为1 (打开LED1)
}
else biu = 0 ; //这样写有点不规范 if(i%3=1) // 同理 那100中有多少个3的倍数 33 个 这个 3..33不好自己写代码时可以写一些整数 我这只是 举个例子 方便理解 { // 也就是说100/33=3.333ms 就是3.33ms 我打开蜂鸣器
mee = 1;
}
else mee = 0; /*********************** 如果有多个项目 可以%2 ,%4,%6,%8,%10,%16..................*******************/
主函数 EA = 1 ; Timer0()//初始化定时器0 while(1) { if(bit ==1) {
LED1 = 0
}
else LED1= 1;LED2 = 0; if(mee == 1) {
BUZZ = 1
}
[p=30, 2, l |