您现在所在的是:

单片机论坛

回帖:3个,阅读:2086 [上一页] [1] [下一页]
1700
QTANSUO
文章数:237
年度积分:50
历史总积分:1700
注册时间:2006/4/28
发站内信
发表于:2009/2/23 21:02:22
#0楼
请问:《例说51单片机  C语言版》中的 /* myio.h-自己写的链接库*怎么不能用?
我写的   文件名:    ch06.Uv2  
           文件类型:* .uv2  
难道是文件名、文件类型不对吗?    请指教。表情
907
hejiaxiang18
文章数:19
年度积分:50
历史总积分:907
注册时间:2008/11/29
发站内信
发表于:2009/2/23 21:54:41
#1楼
你有建那样的文件库吗,光建个文件名肯定不行。单片机用C,我觉得没有必要自己做什么文件库,stdio就够用了
1700
QTANSUO
文章数:237
年度积分:50
历史总积分:1700
注册时间:2006/4/28
发站内信
发表于:2009/2/25 21:02:49
#2楼
/*myio.h-自己写的链接库*/
//==声明区=================================================================================
#include <reg51.h>
#define  LED P0   //定义LED接至Port0
void debouncer(void);    //声明防抖函数
void delay10ms(int); //声明10ms延迟函数
void alter(int); //声明交互闪烁函数    
void left(int);               //声明单等左移函数
void right(int); //声明单灯右移函数
void pili(int);        //声明霹雳灯函数
void flash(int); //声明闪烁函数
//==自己写的子程序==========================================================================
/*防抖动函数,延迟约20ms*/
void debouncer(void) //防抖动函数开始
{ int i; //声明整数变量
for(i=0; i<2400; i++); //计数2400次,延迟约20ms
} //防抖动函数结束
/*延迟函数开始,延迟约x×10ms*/
void delay(int x)     //延迟函数开始
{ int i,j; //声明整数变量 i,j
for(i=0; i<x; i++) //计数x次,延迟约x*10ms
for(j=1; j<=1200; j++);     //计数1200次,延迟约10ms
} //延迟函数结束
/*高低位交互闪烁函数,执行x次*/
void alter(int x) //高低位交互闪烁开始
{ int i; //声明变量i
LED=0x0f; //初始状态(高位两,低位灭)
for(i=0; i<2*x-1; i++) //i变量for循环执行2x-1次  
{ delay10ms(50); //延迟50*10ms=0.5s
LED=~LED; //LED反相输出
} //i变量for循环结束  
delay10ms(50); //延迟50*10m=0.5s
} //高低位交互闪烁函数结束
/*全灯闪烁函数,执行x次*/  
void flash(int x) //全灯闪烁开始
{ int i; //声明变量i
LED=0x00; //初始状态(全亮)
for(i=0; i<2*x-1; i++)     //i变量for循环执行2x-1次
{ delay10ms(50); //延迟50*10m=0.5s
LED=~LED; //P0反相输出
       }     //i变量循环结束
delay10ms(50); //延迟约50*10ms=0.5s
} //全灯闪烁函数结束
/*单灯左移函数,执行x圈*/
void left(int x) //单灯左移函数开始
{ int i, j; //声明变量i,j
for(i=0;i<x;i++) //i循环,执行x圈
{ LED=0xfe; //初始状态=1111 1110
for(j=0;j<7;j++) //j循环,左移7次
{  delay10ms(25); //延迟25*10m=0.25s
LED=(LED<<1)|0x01; //左移1位后,LSB设为1
} //j循环结束
delay10ms(25); //延迟25*10m=0.25s
} //i循环结束
} //单灯左移函数结束
/*单灯右移函数,执行x圈*/
void right(int x) //单灯右移函数开始
{ int i, j; //声明变量i,j
for(i=0;i<x;i++) //i循环,执行x圈
{ LED=0x7f; //初始状态=1111 1110
for(j=0;j<7;j++) //j循环,左移7次
{  delay10ms(25); //延迟25*10m=0.25s
LED=(LED>>1)|0x80; //右移1位后,LSB设为1
} //j循环结束
delay10ms(25); //延迟25*10m=0.25s
} //i循环结束
} //单灯左移函数结束
/*霹雳灯函数,执行x圈 */
void pili(int x) //霹雳灯函数开始
{ int i; //声明变量i
for(i=0; i<x; i++) //i循环x圈
{ left(1); //单灯左移一圈
right(1); //单灯左移一圈
} //i循环结束
} //霹雳霹雳灯函数结束



/*ch4-6-1.c-多重按钮开关实验之1-P4-26*/
//==声明区===================================================================================
#include <reg51.h>
#include "myio.h" //自己写的I/O链接库
sbit PB1=PB2^0; //声明PB1
sbit PB2=PB2^1; //声明PB2
sbit PB3=PB2^2; //声明PB3
sbit PB4=PB2^3; //声明PB4
//==主程序=====================================================================================
main()
{ LED=0xff; //初始状态 (LED全灭)
P2=0xff; //设计P2输入口
while(1) //无穷循环
{ if(PB1==0) //如果按下PB1
{ debouncer(); //防抖动函数
alter(3); //高低位交互闪烁3次
flash(3); } //全灯闪烁3次
else if(PB2==0) //如果按下PB2
{ debouncer(); //防抖动
left(3); //单灯左移3圈
flash(3);} //全灯闪烁3次
else if(PB3==0) //如果按下PB3
{ debouncer(); //防抖动
right(3); //单灯右移3圈
flash(3);} //全灯闪烁3次
else if(PB4==0) //如果按下PB4
{ debouncer(); //防抖动
Pili(3); //霹雳灯3圈
flash(3); } //全灯闪烁3次
} //while循环结束
} //主程序结束  


请问:下面的程序(/*ch4-6-1.c-多重按钮开关实验之1-P4-26*/)错在什么地方?
                                        谢谢!
17528
ahljj
文章数:3387
年度积分:240
历史总积分:17528
注册时间:2002/3/23
发站内信
发表于:2010/7/13 15:34:04
#3楼
学习

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003