写的一个简单按键输入,指示灯输出的小程序,编译现在没有报错,烧录进
单片机运行不起来。看不出那里有问题。望有51单片机高手帮忙看下程序问题出在那里,不胜感激,先行谢过!
//--包含的头文件--//
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
//--定义要使用的IO口--//
sbit USB_SPDIF=P0^0; //USB_SPDIF选择
//sbit 62429_CLK=P0^1; //62429_CLK
//sbit 62429_DATA=P0^2; //62429_DATA
sbit LedFreq0=P0^3; //频率显示0指示
sbit LedFreq1=P1^0; //频率显示1指示
sbit LedFs0=P1^4; //频率输入0
sbit LedFs1=P1^5; //频率输入1
sbit LedCoax=P1^1; //同轴输入指示
sbit LedOpt=P1^2; //光纤输入指示
sbit LedUSB=P1^3; //USB输入指示
sbit KeyInput=P3^2; //输入模式选择
sbit KeyDown=P3^3; //音量减
sbit KeyUp=P3^4; //音量加
uchar conunt=0;
//--声明全局函数--//
void Delay10ms(); //延时子函数
void scan_key(); //按键子函数
/*******************************************************************************
* 函 数 名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b; //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
/*******************************************************************************
* 函 数 名 : scan_key()
* 函数功能 : 扫描键盘
* 输 入 : 无
* 输 出 : 读取到的键值
*******************************************************************************/
void scan_key (void)
{
if (KeyInput==0)
{
Delay10ms(1);
if (KeyInput==0)
{
Delay10ms(1);
while (KeyInput==0);
conunt++;
if (conunt==3)
{
conunt = 0;
}
}
}
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main (void)
{
uchar count = 0;
LedFreq0 = 1; //初始化LED
LedFreq1 = 1;
LedCoax = 1;
LedOpt = 1;
LedUSB = 1;
USB_SPDIF=1;
{
while (1)
{
LedFreq0=LedFs0;
LedFreq1=LedFs1;
scan_key ();
if (count==0)
{
LedUSB = 0;
LedCoax = 1;
LedOpt = 1;
USB_SPDIF =1;
}
if (count==1)
{
LedUSB = 1;
LedCoax = 0;
LedOpt = 1;
USB_SPDIF =0;
}
if (count==2)
{
LedUSB = 1;
LedCoax = 1;
LedOpt = 0;
USB_SPDIF =0;
}
}
}
}
一周热门 更多>