C51单片机学习求助!
SEC_CNT EQU 30H
SEC_0X EQU 31H
ORG 0000H
SJMP MIAN
ORG 000BH
SJMP INT_T0
MIAN:
MOV SEC_CNT, #20
MOV SEC_0X, #00H
MOV TMOD, #01H
MOV TH0, #(65536-50000) / 256
MOV TL0, #(65536-50000) MOD 256
SETB TR0
SETB ET0
SETB EA
MOV DPTR, #TABLE
LOOP:
MOV A, SEC_0X
CJNE A, #100, DISP
MOV SEC_0X, #0
DISP:
MOV A, SEC_0X
MOV B, #10
DIV AB
MOVC A, @A + DPTR
MOV P0, A
CLR P2.6
SETB P2.6
CLR P2.6
MOV P0, #11011111B
CLR P2.7
SETB P2.7
CLR P2.7
DJNZ R7, $
DJNZ R7, $
MOV P0, #11111111B
CLR P2.7
SETB P2.7
CLR P2.7
MOV A, B
MOVC A, @A + DPTR
MOV P0, A
CLR P2.6
SETB P2.6
CLR P2.6
MOV P0, #11101111B
CLR P2.7
SETB P2.7
CLR P2.7
DJNZ R7, $
DJNZ R7, $
MOV P0, #11111111B
CLR P2.7
SETB P2.7
CLR P2.7
LJMP LOOP
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
INT_T0:
MOV TH0, #(65536-50000) / 256
MOV TL0, #(65536-50000) MOD 256
DJNZ SEC_CNT, NEXT
MOV SEC_CNT, #20
INC SEC_0X
NEXT:
RETI
END
#include
typedef unsigned int uint;
typedef unsigned char uchar;
sbit P1_0 = P1^0;
uchar data int0state,delaykey;
uint data times;
void INT0Fun() interrupt 0 //外部中断 设为下降沿触发
{
if(delaykey==0) //按扭可能有抖动,做防抖处理
{
int0state++;
if(int0state>=3)
int0state = 0;
times = 0;//重新开始计时
delaykey = 2;//delaykey个时间片内不再处理外部中断,误差0-1个时间片
}
}
void TIME0Fun() interrupt 1 //定时器0 模式1 10
{
TH0 = (uchar)((65536-10000)>>8);
TL0 = (uchar)(65536-10000); //focs 12M 定时10ms 每次溢出
if(delaykey) delaykey--;
times++;
switch(int0state)
{
case 0:
if(times>=500) times=0;
if(times<300) P1_0 = 1; else P1_0 = 0;
break;
case 1:
if(times>=900) times=0;
if(times<500) P1_0 = 0; else P1_0 = 1;
break;
case 2:
if(times>=400) times=0;
if(times<200) P1_0 = 0; else P1_0 = 1;
break;
default:
break;
}
}
void init() //初始化
{
TMOD= 0x01;
TH0 = (uchar)((65536-10000)>>8);
TL0 = (uchar)(65536-10000);//FOSC 12M 定时10ms
ET0 = 1; //定时计数0允许发生
EX0 = 1; //外部中断0允许发生
IT0 = 1; //下降沿触发
TR0 = 1; //计时器开始
//..... 添加初始化其它内容
EA = 1;
}
void main()
{
init();
while(1)
{
//TODO......添加你其它代码逻辑
;
}
}
/////无聊了,随手写一个,试试合不合用 排版乱了,懒得改了
//方波是不是高低电平时间一样长的? 改行做C51快1年了,概念一概不懂,汗
你是从事自动监控行业的,若是你现在的工作有部分涉及到单片机和ARM,那我还是建议你先学习单片机,因为单片机也可以让你在这行业上要作得得心应手,而且单片机的学习不像ARM那样复杂,单片机你可以在一个月的时间就可以学得差不多,但对于ARM,你没有一年时间是不可能学到什么的,我就是这样过来的。单片机我玩得很顺手,然后去学ARM,才发现那东西不像单片机那么容易上手,好在我还学过DSP,这才算是有点入门帮忙。
所以ARM的学习是不能急的。
单片机的学习,我想你就不必要去学习51了,直接学习AVR,你就算学了51,但对你学习AVR没有什么帮忙,因为这两个单片机相差太多了,我想51也要快过时了。
学习avr,最好你用AVR16或8来学习,这样比较有典型。
开发板吗,我想对初学者来说,用PROTUES这个软件就是最好的开发板,你可以试试,
现在都是用c来写代码的,你以前学过,现在要再拿起应该不是难。你在网上找几个C的例子来看一看就差不多可以上手,然后自己不看,重新写一次,重要的是要自己重写一次(千万别想当然)
用CVAVR这个软件吧,它是专门对AVR的
这个上手更加容易
最后再用soureinsigth这个软件编写
如果是个学生,想学好嵌入式,还是多多去吃透模拟电子和数学算法吧,
现在这个时代的嵌入式编程起点已经跟在计算机上修改一个网页一样简单了,如有认为自己会开车了,就对汽车很懂了,那就是笑话,
要做一个好的设计人员,必须有良好的理论基础,对行业的激情,以及对名利金钱的淡薄,
没事多去电子方面的论坛转转
单片机小精灵,要1.2版的……
关键不是这个,是你对实现的方法有没有想法,然后画成一个程序的流程图,分块去写, 做好接口设计……写注释……
不是说不好找工作,只要你实践能力强,工作是好找的,不过仅仅是学单片机的话,工资不高也就2、3K,还是学一学ARM好的(不推荐本科学DSP,很难掌握),工资也相对高点。学ARM的话就买个开发板吧,一般都配有很多资料,跟着学就对了(个人认为学ARM要好好地学一下操作系统的原理)
你可能说的这些会只是下几个现有程序编译下,单单点个液晶呀什么的,如果能够把这些组合在一起做几个项目的话,就可以说是会了,东西不是会的多就好,你这个会一点,那个会一点,都半桷水的话做工程是没什么用的,还不如把一样东西学精了
51单片机初学者该怎么学
51单片机初学者学习步骤:第一步是基础理论知识的学习。单片机编程可使用C语言或汇编语言,建议初学者使用C语言,因为其模块化编程更为便捷,移植性强,适用于编写大规模程序。对于C语言编程,需要掌握的语句包括条件判断语句、循环语句、跳转语句和开关语句,共计10个。别小看这10个语句,它们可以组合成非...
51单片机初学者该怎么学
这一过程中,最好参考一本单片机相关的书籍,例如《王云51单片机C语言教程》,结合书中附带的“云龙51”教学视频进行学习,会更易于理解。第二步是进行单片机编程实践。学习单片机需要一定的硬件和软件工具。首先,需要一台电脑、一块单片机开发板和一本配套的教材(最好是附带教学视频的)。电脑主要用于编...
求好的51单片机学习网站
1. 推荐51单片机学习网站:菜鸟单片机。2. 迅升饥菜鸟单片机网站提供了丰富的51单片笑雀机学习资源。3. 该网站拥有众多关于51单片机的教程,从基础知识到高级应用,内容全面且易于理解。4. 对于初学者来说,它提供了许多入门教程,通过实例和图解的方式,让读者快速掌握单片机的基本概念和编程方法。5. ...
C51单片机学习求助!
单片机的学习,我想你就不必要去学习51了,直接学习AVR,你就算学了51,但对你学习AVR没有什么帮忙,因为这两个单片机相差太多了,我想51也要快过时了。学习avr,最好你用AVR16或8来学习,这样比较有典型。开发板吗,我想对初学者来说,用PROTUES这个软件就是最好的开发板,你可以试试,现在都是用c...
怎样自学51单片机?
- **参考书籍**:推荐《新概念51单片机C语言教程》的第1章《基础知识必备》、《爱上单片机》、《51单片机自学笔记》。- **学习资源**:观看郭天祥的10天学会51单片机和金沙滩的手把手教你学51单片机教程。2. **进阶学习 - **STM32开发**:学习使用STM32单片机进行开发,掌握库函数编程。- **...
51单片机如何入门?
首先,学习电子元器件的基础知识,了解电阻、电容等元器件的功能和作用。接着,学习模拟电子电路的基础知识,了解电压、电流等基本概念。然后,学习数字电路的基础知识,理解二进制和逻辑门等概念。接下来,熟悉51单片机的硬件结构,了解其内部组成和功能。最后,学习编程语言,掌握C语言等编程知识。完成以上...
51单片机该怎么学?
学习的工具 软件方面方面, 51 单片机用的是 KEIL 软件,这个软件在学校图书馆软件下载和其他网站上都有,具体用法自己查找相关资料, AVR 的软件就比较多了,我用的是 CVAVR ,另外还有 ICCAVR 等多款编译软件,这要看个人喜好了,建议有了一定的 51 基础再学。另外就是烧写软件,烧写软件的作用就是将编译器生成的...
51单片机如何入门?
1,学习电子元器件基础 2,学习模拟电子电路基础 3,学习数字电路基础 4,熟悉51单片机硬件结构 5,学习编程语言 上面的学完了就入门了 ,我不建议买51单片机开发实验板来学习,开始学就是要增加自己的动手能力,动手才了解电路,排除故障,得到经验,制作一个51单片机最小系统是很简单的,再加个8位流水...
51单片机怎么入门
先说说单片机,我们现在用的比较多的是8051单片机,它的资料比较多,用的人也较多,市场也很大,51单片机内部结构比较简单,非常适合初学者学习,建议初学者将51单片机做为入门级芯片。单片机属于硬件,我强烈不推荐大家使用单片机仿真软件来学习单片机,也可以肯定的告诉大家,使用仿真软件是学不会单片机的,...
求新手学习51单片机的书以及单片机C语言编程的书籍,最好网上能买到...
此外,我还推荐一本关于C语言学习的书籍,《21天学通C语言》的作者是BRADLY L.JONES,一位美国专家。这本书深入浅出,非常适合编程新手。不过,如果想要更深入地了解51单片机,尤其是在完成基础学习之后,我建议你阅读《51单片机常用模块设计》。这本书详细介绍了51单片机的各种模块和应用实例,对于提升...