求好的51单片机学习网站
发布时间:2025-05-20 06:44:21 发布人:远客网络
一、求好的51单片机学习网站
强烈推荐之一:小刚之家:bes.8u8.com
(这是一个非常不错的网站,从廉价的编程器,到KILE的汉化版,再到种类齐全的免费学习和应用软件和资料,可见站长的良苦用心。我的编程器就是在这里买的,非常不错!)
强烈推荐之二:单片机爱好者://www.mcufan.com
强烈推荐之三:单片机学习网:www.mcustudy.com
(以上这两个有不少学习资料供浏览和下载。)
强烈推荐之四:电子制作实验室:www.xie-gang.com
(这里有单片机学习的网上教程,连载哟!)
强烈推荐之五: 51单片机://www.mcu51.com
(这可是大名鼎鼎的哟!她的论坛在单片机世界的影响就象HELLOCQ在HAM中的影响一样。)
强烈推荐之六:哦,没有了!:D:D:D
衷心祝愿单片机爱好者及学习者们马到成功!!!(我也是正在学习中的菜鸟哟!;))
二、51单片机编程求指导。。。
1、嘿嘿楼上的老兄给出的程序也不对呀看上去挺工整的,错误好几出啊,是得不到正确结果的。
2、其实算法很简单,只要熟悉一下单片机的加法指令和循环移位指令,自己就可以编写出来。
3、就是使用指针连续对20H开始的连续4个单字节二进制数相加,结果存入31H单元,要考虑进位,(进位部分存入31H单元)
4、求平均值就是对和除4,可以使用循环右移指令每移一次相当于除2总共2次就行了。
5、2楼上的错误:使用指令 ADD A,31H求的和在累加器A里,并没有存入31H
6、 RRC A;带进位循环右移完成一次除2
7、同样没有将结果回送给31H单元(保存)
8、呵呵满意就选满意回答(想要正确程序可以发消息给我)
三、51单片机C语言编程
// 51单片机C语言编程,这个时钟+秒表可以参考一下。
uchar code select[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*****************函数声明***********************/
void display(uchar,uchar,uchar);
/*****************主函数*************************/
while(s==1)//s是状态标志,当s=0时,闹钟取消。s=1时,设定闹钟时间(也是通过调时,调分函数);
{//s=2时,闹钟工作,时间与设定时刻一致时,闹钟响(一分钟后自动关闭,可手动关闭)。再次切换,s=0.
keyscan();//s状态切换(0-》1-》2-》0)通过外部中断1实现。
display(hour1,minu1,sec1);//闹钟时刻显示
display(hour0,minu0,sec0);//时钟表显示
while(k)/*k是秒表状态(0-》1-》2-》0)通过外部中断0实现。0秒表关;1秒表从零计时;2秒表停,显示计时时间*/
display(hour,minu,sec);//秒表显示
/*****************初始化函数***********************/
TMOD=0x11;//定时器0,1工作于方式1;赋初值
/*****************定时器0中断*************/
void timer0_int() interrupt 1//秒表
/*************外部中断0中断函数************/
/*************外部中断1中断函数************/
/*************定时器1中断****************/
void timer1_int() interrupt 3//控制时钟工作
if(hour1==hour0&& minu0==minu1)
/*************键盘扫描****************/
/*************显示函数****************/
void display(uchar hour,uchar minu,uchar sec)
/*************闹钟函数****************/
/*************延时函数****************/