哪位大神懂这个51单片机比较大小指令指令的,小白刚学,求大神帮我把每句都注释下都什么意思。

【图片】求大神,小白刚入门就被掐死【51单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:51,913贴子:
求大神,小白刚入门就被掐死收藏
这是什么意思
专业从事单片机开发的生产,具有高品质的研发团队和设备,产品高品质保证,10年生产开发经验,深受国内外合作伙伴信赖,你的明智选择!!
错在哪里,在线等
第一天刚学就要gg吗
为用户提供各种低成本,低功耗,低能耗,功能强的微控制器解决方案.恩智浦微控制器,高性能,设计新颖,性能稳定,价格超低,欲购从速,欢迎垂询!
妈的while语句用小括号
从入门到放弃括号错了
登录百度帐号推荐应用我是新手什么都不会(什么都不懂完全是小白),我想学,哪位大神可以给我一些指点 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
我是新手什么都不会(什么都不懂完全是小白),我想学,哪位大神可以给我一些指点
02:27:29  
我是新手什么都不会(什么都不懂完全是小白),我想学,哪位大神可以给我一些指点
08:32:53  
相信自己。。。自己做个板子 调试个最小系统 就明白了
助理工程师
09:09:57  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
买一个51的开发板,然后按照给的资料一步一步玩,很快就知道怎么玩了
助理工程师
09:10:41  
买个开发板学学,然后自己做些小产品调试
09:59:07  
楼主可以描述清楚一下自己想学习哪方面的知识哦
10:20:49  
如果是单片机的话,坛子里有很多大神。&&新手的话, 有两本书推荐给你, 宋老师的手把手教你单片机;一个是刘老师的深入浅出单片机。 买一个开发板,结合这2本书,好好吃透,基本上就可以入门了。
再想深入的话,那就自己学着搭电路硬件,想一些基础的应用,做一下项目开发, 经典的帖子有吴坚鸿的从业十年系列,有吴鉴鹰大神的单片机项目清单。 搞定这些,你算是进入了单片机开发的中阶了,基本上你需要什么,想做什么,心里都会有个谱的。
高级工程师
10:49:22  
& && &建议你去网上下载一本【模拟电子技术基础(第四版)】的电子书先看看,里面是从最基础的元件开始讲起的,十分适合初学者学习与使用。
10:52:54  
买开发板,自学,,,
10:53:06  
这是唯一途径,,,
10:53:27  
不可能一口气吃胖
10:54:04  
唯一能吃胖的原因就是狼图腾中的狼皮在喝风
10:54:39  
这是我自己从小白到入门到做项目的经历
10:55:29  
别人不会真心帮你的,除非你有特别好的朋友,男友或女友做这方面
10:56:08  
多弄板子,都自学,上论坛可以找到入门资料
10:56:37  
深入的就只能靠自己了
高级工程师
15:42:36  
学STM32 不,我有核心板和下载器,提供入门支持,需要联系我啊
20:25:46  
楼主想学那方面的资料&&这个要区别对待的&&
20:26:21  
不过学什么都有个共性 就是多看书 多实践 才能学会
22:26:56  
求人不如求己
11:29:14  
赞同求人不如求己,学习是这样的过程
Powered by
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
下载发烧友APP
版权所有 (C) 深圳华强聚丰电子科技有限公司小白求大神帮忙参考利用51单片机制作的难度_51单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:51,913贴子:
小白求大神帮忙参考利用51单片机制作的难度收藏
想做一个带矩阵键盘的可以小数点的(也可以不用)能进行加减乘除和复位的设计,有大神能说明一下难度问题吗?程序好写吗?(有大神能给一个程序小弟感激不尽)
专业从事单片机开发的生产,具有高品质的研发团队和设备,产品高品质保证,10年生产开发经验,深受国内外合作伙伴信赖,你的明智选择!!
登录百度帐号推荐应用哪位大神能帮忙注释下,小白看不懂,万分感谢【51单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:51,913贴子:
哪位大神能帮忙注释下,小白看不懂,万分感谢收藏
#include&stc.h&#define uchar unsigned char#define uint unsigned intuchar j,k,flag,n;uint Cuchar a0,b0,c0,d0,e0,f0,g0,h0;sbit dula=P2^6;sbit wela=P2^7; sbit red = P1^0;sbit green = P1^3;sbit white = P1^7; sbit key1=P3^4;sbit key2=P3^5; unsigned char codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; void delay(uchar i)
for(j=i;j&0;j--)
for(k=125;k&0;k--);} void Time0_Init(){
TMOD= 0x01;
} void KeyScan(){
if(key1== 0)
delay(10);
if(key1== 0)
if(flag==1)
while(key1==0);
if(key2==0)
delay(10);
if(key2==0)
while(key2==0);
}}void display(uchar a,uchar b,uchar g,uchar h){
P0=table[a];
P0=table[b];
P0=table[g];
P0=table[h];
delay(5);} void main(){
Time0_Init();
KeyScan();//
num = (29-Count/20)*+n;
a0=num/10;b0=num%10;g0=n%100/10;h0=n%10;
display(a0,b0,g0,h0);
}}void Time0_Int() interrupt 1{
num= (29-Count/20);
if(Count&=600)
flag=(flag+1)%2;
登录百度帐号推荐应用19:59 提问
求大神指导,小白一只。
#include "reg52.h"#include "intrins.h"sbit SDA=P2^1;//总线连接口定义sbit SCL=P2^0;//总线连接口定义sbit duan=P2^2;sbit wei=P2^3;typedefuchar duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar t[8];void delay(uchar m)//us延时作用{
while(--m);}void delays(uchar t)//ms延时作用{
while(t--)
delay(245);
delay(245);
}}/*void display(uchar firstbit,uchar weishu){
P0=weima[firstbit+i];
if(i==weishu)
i=0;}*//*void time_0()interrupt 1{
TH0=()/256;
TL0=()%256;
display(0,8);}*/void iic_start()//开始通知芯片读写开始。{
SDA=1;//上来先让数据线置高电平
SCL=1;//接着让时钟线置高电平
delay(5);//SDA和SCL同时为高电平保持4.7us以上
nop();//1.805us,共5.78us,下面SDA=0;是下降沿,不能计算在延时时间中
SDA=0;//在时钟线为高电平,而数据线由高电平到低电平的过程读写芯片开始进行.//下降沿
delay(5);//SDA低电平保持4us以上,这里是4.34us满足要求。
//注意开始后SCL为1,SDA为0;
}void iic_inti()//总线初始化{
SCL=1;//=-----————————————————————&&&&&&&&&&&&&让时钟线和数据线都为高电平
SDA=1;//------——————————————————&&&&&&&&&&&&让时钟线和数据线都为高电平
delay(5);}void iic_stop(){
nop();//准备状态
//————————————————————————&&&&&&&&结束信号是时钟线为高电平,而数据线由低电平到高电平的过程
delay(5);//该稳态需要保持时间为4us以上。
SDA=1;//SCL高电平期间,SDA来一个上升沿,
delay(5);//SDA保持4US以上,4.34加上函数返回时间大于4.7us;
//注意结束时SCL和SDA都为1;}void iic_sendbyte(uchar bytedate)//发送一个字节{
for(i=0;i&8;i++)
temp=temp&&1;//移动后最高位到了PSW寄存器的CY位中。
SCL=0;//准备发送阶段
nop();//稳定一下
SDA=CY;//将发送的数据一位位的发送到CY位的SDA上
nop();//稳定一下
SCL=1;//每一个高电平期间,IC器件都会将数据取走
nop();//稳定一下
SCL=0;//如果写成SCL=1,SDA=1;就是停止信号了,所以不能那样写
SDA=1;//释放总线,数据总线不用时要释放
nop();}uchar iic_readbyte(){
SCL=0;//准备读数据
SDA=1;//释放总线
for(i=0;i&8;i++)
SCL=1;//MCU开始取数据
delay(5);//SCL为高电平后,IC器件就会将一位数据送到SDA上,
//总共用时不会大于4.34us的,然后就可以让MCU度SDA了 temp=(temp&&1)|SDA;//读一位,保存到temp中。
}}bit iic_checkACK()//处理信号{
uchar errcount=255;//定义超时量为255次
while(SDA)
{ //在一段时间内检测到SDA=0的话认为是应答信号
if(0==errcount)
SCL=0;//钳住总线
return 0;//没有应答信号
errcount--;
SCL=0;//钳住总线,为下一次通信做准备 nop();
return 1;//成功处理应答信号}void iic_sendACK(bit b_ACK)//发送应答或非应答信号{
SCL=0;//准备
if(b_ACK)//ACK
delay(5);//大于4us的延时
钳住SCL,以便接受数据.
nop();}void AT24c02_writebyte(unsigned char addr,unsigned char byte)//向24c02写一个字节数据{
iic_start();
iic_sendbyte(0xa0);//MCU写控制字,前四位固定1010,后三位地址0,末位0是写数据的模式
iic_checkACK();//MCU
处理应答信号
iic_sendbyte(addr);//
准备在指定的地址写入
iic_checkACK();
iic_sendbyte(byte);//写数据
iic_checkACK();
iic_stop();
delays(2);//按字节写入时,24c02在接收到停止信号后,将数据擦写到内部,这需要时间
//并且在这段时间内不会响应总线上的任何请求,固让MCU有2毫秒以上的等待 } void AT24c02_writeData(unsigned char address,unsigned char numbytes,unsigned char *buf)//写入任意长度数据 {
while(numbytes--)
AT24c02_writebyte(address++,*buf++); }} void AT24c02_readData(unsigned char beignAddr,unsigned char dataSize,unsigned char *buf)//读取任意长度字节 {
iic_start();//起始信号
iic_sendbyte(0xa0);//控制字,写的模式//控制字,读的模式//1010(固定模式)000,地址;最后一位是控制读或写的模式,1为读,0为写
iic_checkACK();//处理应答信号 iic_sendbyte(beignAddr);//发送地址
iic_checkACK();//处理应答信号 iic_start();//发送起始信号
iic_sendbyte(0xa1);//控制字,读的模式//1010(固定模式)000,地址;最后一位是控制读或写的模式,1为读,0为写 iic_checkACK();//处理应答信号 while(dataSize--)
*buf++=iic_readbyte();//读取一个个字节并保存到缓冲区buf中,
iic_sendACK(dataSize);//发送应答,当dataSize为0时发送非应答 }
iic_stop();//发送停止信号}unsigned char
dat[]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0xff,0xff,0x00,0x00,
0x55,0x55,0xaa,0xaa
};//ram允许情况可以无限添加i;void main(){
iic_inti();
AT24c02_writeData(0xae,16,dat);
//写入24c02
//第一个数据0xae,代表大地址,第二个1,代表小弟指,一个24c02的小地址的范围是0--250,
//第三个是代表数据的地址
delays(1);
为什么这个程序在不插数据线和时钟线的时候,led灯不亮。
按赞数排序
#include "reg52.h"#include "intrins.h"sbit SDA=P2^1;//总线连接口定义sbit SCL=P2^0;//总线连接口定义sbit duan=P2^2;sbit wei=P2^3;typedefuchar duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar t[8];void delay(uchar m)//us延时作用{
while(--m);}void delays(uchar t)//ms延时作用{
while(t--)
delay(245);
delay(245);
}}/*void display(uchar firstbit,uchar weishu){
P0=weima[firstbit+i];
if(i==weishu)
i=0;}*//*void time_0()interrupt 1{
TH0=()/256;
TL0=()%256;
display(0,8);}*/void iic_start()//开始通知芯片读写开始。{
SDA=1;//上来先让数据线置高电平
SCL=1;//接着让时钟线置高电平
delay(5);//SDA和SCL同时为高电平保持4.7us以上
nop();//1.805us,共5.78us,下面SDA=0;是下降沿,不能计算在延时时间中
SDA=0;//在时钟线为高电平,而数据线由高电平到低电平的过程读写芯片开始进行.//下降沿
delay(5);//SDA低电平保持4us以上,这里是4.34us满足要求。
//注意开始后SCL为1,SDA为0;
}void iic_inti()//总线初始化{
SCL=1;//=-----————————————————————&&&&&&&&&&&&&让时钟线和数据线都为高电平
SDA=1;//------——————————————————&&&&&&&&&&&&让时钟线和数据线都为高电平
delay(5);}void iic_stop(){
nop();//准备状态
//————————————————————————&&&&&&&&结束信号是时钟线为高电平,而数据线由低电平到高电平的过程
delay(5);//该稳态需要保持时间为4us以上。
SDA=1;//SCL高电平期间,SDA来一个上升沿,
delay(5);//SDA保持4US以上,4.34加上函数返回时间大于4.7us;
//注意结束时SCL和SDA都为1;}void iic_sendbyte(uchar bytedate)//发送一个字节{
for(i=0;i&8;i++)
temp=temp&&1;//移动后最高位到了PSW寄存器的CY位中。
SCL=0;//准备发送阶段
nop();//稳定一下
SDA=CY;//将发送的数据一位位的发送到CY位的SDA上
nop();//稳定一下
SCL=1;//每一个高电平期间,IC器件都会将数据取走
nop();//稳定一下
SCL=0;//如果写成SCL=1,SDA=1;就是停止信号了,所以不能那样写
SDA=1;//释放总线,数据总线不用时要释放
nop();}uchar iic_readbyte(){
SCL=0;//准备读数据
SDA=1;//释放总线
for(i=0;i&8;i++)
SCL=1;//MCU开始取数据
delay(5);//SCL为高电平后,IC器件就会将一位数据送到SDA上,
//总共用时不会大于4.34us的,然后就可以让MCU度SDA了 temp=(temp&&1)|SDA;//读一位,保存到temp中。
}}bit iic_checkACK()//处理信号{
uchar errcount=255;//定义超时量为255次
while(SDA)
{ //在一段时间内检测到SDA=0的话认为是应答信号
if(0==errcount)
SCL=0;//钳住总线
return 0;//没有应答信号
errcount--;
SCL=0;//钳住总线,为下一次通信做准备 nop();
return 1;//成功处理应答信号}void iic_sendACK(bit b_ACK)//发送应答或非应答信号{
SCL=0;//准备
if(b_ACK)//ACK
delay(5);//大于4us的延时
钳住SCL,以便接受数据.
nop();}void AT24c02_writebyte(unsigned char addr,unsigned char byte)//向24c02写一个字节数据{
iic_start();
iic_sendbyte(0xa0);//MCU写控制字,前四位固定1010,后三位地址0,末位0是写数据的模式
iic_checkACK();//MCU
处理应答信号
iic_sendbyte(addr);//
准备在指定的地址写入
iic_checkACK();
iic_sendbyte(byte);//写数据
iic_checkACK();
iic_stop();
delays(2);//按字节写入时,24c02在接收到停止信号后,将数据擦写到内部,这需要时间
//并且在这段时间内不会响应总线上的任何请求,固让MCU有2毫秒以上的等待 } void AT24c02_writeData(unsigned char address,unsigned char numbytes,unsigned char *buf)//写入任意长度数据 {
while(numbytes--)
AT24c02_writebyte(address++,*buf++); }} void AT24c02_readData(unsigned char beignAddr,unsigned char dataSize,unsigned char *buf)//读取任意长度字节 {
iic_start();//起始信号
iic_sendbyte(0xa0);//控制字,写的模式//控制字,读的模式//1010(固定模式)000,地址;最后一位是控制读或写的模式,1为读,0为写
iic_checkACK();//处理应答信号 iic_sendbyte(beignAddr);//发送地址
iic_checkACK();//处理应答信号 iic_start();//发送起始信号
iic_sendbyte(0xa1);//控制字,读的模式//1010(固定模式)000,地址;最后一位是控制读或写的模式,1为读,0为写 iic_checkACK();//处理应答信号 while(dataSize--)
*buf++=iic_readbyte();//读取一个个字节并保存到缓冲区buf中,
iic_sendACK(dataSize);//发送应答,当dataSize为0时发送非应答 }
iic_stop();//发送停止信号}unsigned char
dat[]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0xff,0xff,0x00,0x00,
0x55,0x55,0xaa,0xaa
};//ram允许情况可以无限添加i;void main(){
iic_inti();
AT24c02_writeData(0xae,16,dat);
//写入24c02
//第一个数据0xae,代表大地址,第二个1,代表小弟指,一个24c02的小地址的范围是0--250,
//第三个是代表数据的地址
delays(1);
for(i=0;i&16;i++)
AT24c02_readData(0xae,16,dat);
//从24c02读数据
//第一个数据0xae,代表大地址,第二个1,代表小弟指,一个24c02的小地址的范围是0--250,
//第三个是代表数据的地址
for(i=0;i&16;i++)
delays(200);
P1=dat[i];
完整程序。
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
要看你LED接在哪的?没看到有驱动LED的程序部分啊。。。
如果你说的LED是工作指示灯,需要看整个板子是否正常工作,
如果你LED也是单片机驱动的,把那段程序和相关部分发上来。这样一大篇,还没有换行,看着有点累,也没找到有关LED的部分啊
(⊙o⊙)哇,你这个看着也太费劲了啊!
其他相关推荐}

我要回帖

更多关于 单片机指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信