利用定时/计数器产生定时时钟,由P1口控制8个指示灯,编写程序(c语言写),

使八个指示灯轮流点亮,每个灯亮一秒,每个灯闪亮频率为5次/秒。。求大神在线等
需求80C51单片机能用的

#include <reg51.h>                  // 单片机头文件
void delay(void)
{
    unsigned char ov_times;         // 延时时间计数
    TMOD=0x01;                       // 设置定时器0工作在方式1
 
    TH0= OXBE;                // 12Mhz
    TL0=OXE0;
    TR0=1;                          // 启动定时器
    ov_times=50;                    // 设置延时时间计数值
    while(ov_times!=0)              // 查询是否到延时时间
    {
        if(TF0==1)                  // 查询定时器计数是否溢出
        {TH0=OXBE;TL0=OXE0;TF0=0;ov_times--;}// 重置初值,清除溢出位  }
    TR0=0;                          // 关闭定时器
}
void main()
{
    while(1)
    {
        P1=_crol_(P1);
        delay();                     // 延时
    }

 你要告诉我你的单片机的时钟频率,不然没法计算计数初值的

追问

用的是80C51的芯片。。一般是12MHz吧、、你这个是12MHz

我明天用程序试一下。。oK我就给你采纳。。还送你50

追答

我的80c51是22.1184Mhz的,不过这个程序写的是12MHZ,你可以试试,还有,程序里面delay函数少一个大括号,手误,你自己改一下

追问

你 的crol_缺少头文件..而且你下面函数好象也缺少东西..

温馨提示:答案为网友推荐,仅供参考