80c51单片机P1端口上经驱动器接有8只发光二极管FOSC=6MHZ,试编写程序
答案:2 悬赏:20 手机版
解决时间 2021-11-23 00:20
- 提问者网友:凉末
- 2021-11-22 13:54
80c51单片机P1端口上经驱动器接有8只发光二极管FOSC=6MHZ,试编写程序
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-11-22 15:01
6MHz晶振的话,一个机器周期就是2us,采用定时器计数就会每隔2us计数一次,犹豫你没有指定使用什么工作方式,我暂且使用工作方式1吧,16位定时计数器,那么定时器初值就应为65536-25000,定时器初始化:
void inition()
{
TMOD=0x01;
TH0=(65536-25000)/256;
TL0=(65536-250000)%6;
EA=1;
ET0=1;
TR0=1;
}
中断程序:
void timer() interrupt 1
{
TH0=(65536-25000)/256;
TL0=(65536-250000)%6;
P1=00000001;
}
程序的关键给你了,不要依靠别人全部做出来,没意义。
希望我的回答能帮助到你。追答修正中断函数:
P1=00000001<<1;
void inition()
{
TMOD=0x01;
TH0=(65536-25000)/256;
TL0=(65536-250000)%6;
EA=1;
ET0=1;
TR0=1;
}
中断程序:
void timer() interrupt 1
{
TH0=(65536-25000)/256;
TL0=(65536-250000)%6;
P1=00000001;
}
程序的关键给你了,不要依靠别人全部做出来,没意义。
希望我的回答能帮助到你。追答修正中断函数:
P1=00000001<<1;
全部回答
- 1楼网友:詩光轨車
- 2021-11-22 16:27
#include "reg51.h"
char i=0;
void time0(void) interrupt 1
{
TL0=(65536-50000)%0x100;//6M晶体此常数为100ms中断一次
TH0=(65536-50000)/0x100;
c++;
if(c==10){
c=0;
P1=(1 if(++i==8)i=0;
}
}
void main(void){
TMOD=0x01;
EA=ET0=RT0=1;
while(1);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯