矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 10656|回复: 49

研究了几天电脑C编程,算是入门了!

[复制链接]
     
发表于 2020-2-3 19:35:48 | 显示全部楼层 |阅读模式
本帖最后由 分立元件 于 2020-2-3 19:40 编辑

现在使用感觉和单片机编程差不多了,单片机控制IO口,电脑控制键盘输入和显示输出,两者核心程序思维基本一样,不同点就是输入输出,单片机直接控制IO口高低电平,电脑控制系统包装好的函数,从而控制键盘和显示器等外设!
微信截图_20200203192055.png 微信截图_20200203192128.png

微信截图_20200203192249.png 微信截图_20200203192313.png
     
发表于 2020-2-5 17:16:06 | 显示全部楼层
washu 发表于 2020-2-3 21:49
这话我说过很多次,但每次都有“老前辈”窜出来语重心长地劝解,不学汇编,你是做不了什么东西的

确实如此!


其实初学者,真心不建议学汇编,并不是汇编不好!而是汇编太基础了,基础到什么程度呢?

就是你学习汇编了,在学C,那么你会用汇编的思想去用C编程,我告诉你,这是非常可怕的事情,如果还用汇编思想,哪怕带一些汇编思想来用
C编程的话,那么就失去C的意义了,反而会束手束脚!

结论:初学者一定要先学C, 有精力在学点汇编(只要能看懂就可以了)是最好的!

切记: 切记: 不要用汇编编程的思想来驾驭C,会很难受滴!


当然,高手不存在这个问题了! 混合编程那才是神技!

借用吴哥一段话共勉
【【【

(1)很难记住繁杂的寄存器?寄存器不用死记硬背,鸿哥我行走江湖多年,连一个寄存器都记不住。需要配置
寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄
存器是最最下策。

(2)很难记住繁杂的汇编语言指令?除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是
浪费时间。鸿哥我行走江湖多年,从来就没有用汇编帮客户做过一个项目。


  3)C  语言很难学?你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文
件操作,你也不用死记繁琐的数据类型。你只要会:
    5 条指令语句switch 语句,if else 语句,while 语句,for 语句,=赋值语句。
    7 个运算符+,-,*,/,|,&,!。
    4 个逻辑关系符||,&&,!=,==.
    3 个数据类型unsigned char, unsigned int, unsigned long 。
    3 个进制相互转化,二进制,十六进制,十进制。
    1 个void 函数。
    1 个一维数组code(或const) unsigned char array[]。
   那么世界上任何一种逻辑功能的单片机软件你都能做出来。
   鸿哥我当年刚毕业出来工作的时候才知道可以用C 语言开发单片机,一开始只用if 语句就把项目做出来了,
没有用指针,没有用带形参的函数等复杂的功能。再到后来才慢慢开始用C 语言其他的高级功能,但是我发现C
语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编
译后的机器码都大同小异。所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这
些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。当你裸机跑的
程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操
作系统来玩玩。


  4 )很难记住精确时间的计算公式?经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关
系式。鸿哥我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,
你都不可能做出非常精确的时间。想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。真想
做一个比较精确的时间,应该用外围时钟芯片或者FPGA 和CPLD,而不是单片机。

(5)很难记住繁杂的各种通信协议?什么IIC,SPI,232  串口通讯,CAN,USB 等等。这些都是浮云,你不用记那
么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。不管世界上有多少种通讯协议,
物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。


  6)很难写短小精悍的程序?初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点
少一点没关系,现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,
可读性和可修改性。

   既然鸿哥列出了那么多误区,那么什么才是初学者关注的核心?预知详情,请听下回分解----delay()延时实
现LED 灯的闪烁。

】】】
回复 支持 3 反对 0

使用道具 举报

     
发表于 2020-11-28 19:06:56 来自手机 | 显示全部楼层
zaq 发表于 2020-2-5 17:16
确实如此!



我们当年学单片机,真的是从数字电路学起的,所以对CPU的结构理解起来很容易。学汇编顺理成章,用起来也没觉得难,倒是看C语言看的一头雾水。单片机需要自己编许多模块,包括字库译码通讯什么的。当年51那是流行色。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
发表于 2020-2-3 19:43:32 来自手机 | 显示全部楼层
比我还要快入门
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-2-3 19:49:45 | 显示全部楼层
zmc5354 发表于 2020-2-3 19:43
比我还要快入门

也不快了,已经研究很多年了,一直没有搞懂,最近突然间领悟了很多!
回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 19:52:03 | 显示全部楼层
恭喜 LZ 入坑,单片机就是这么玩的。
端口以高/低电平的形式与外界交互,省下的内容和标准 C 一样的。

再往后就是各种片上硬件
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-2-3 20:01:57 | 显示全部楼层
t3486784401 发表于 2020-2-3 19:52
恭喜 LZ 入坑,单片机就是这么玩的。
端口以高/低电平的形式与外界交互,省下的内容和标准 C 一样的。

两者差不多,这下学的容易了
回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 20:59:23 | 显示全部楼层
分立元件 发表于 2020-2-3 20:01
两者差不多,这下学的容易了

等玩熟练了建议入门 Arduino,分分钟给力
回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 21:26:56 | 显示全部楼层
经常看到有人告诉初学者,学习单片机要先学习汇编语言;纯属误导;直接学C 就行了;
以前的单片机,内存小,速度慢。学习汇编是首选;但时代不同了……;

回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 21:31:26 | 显示全部楼层
找到共通点,就可举一反三,学习的效率更高了。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 21:43:29 | 显示全部楼层
我也在自学C语言和单片机,这个 很有意思。感觉会的越多越好玩。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 21:49:14 | 显示全部楼层
壹法拉 发表于 2020-2-3 21:26
经常看到有人告诉初学者,学习单片机要先学习汇编语言;纯属误导;直接学C 就行了;
以前的单片机,内存小 ...

这话我说过很多次,但每次都有“老前辈”窜出来语重心长地劝解,不学汇编,你是做不了什么东西的
回复 支持 反对

使用道具 举报

     
发表于 2020-2-3 23:11:04 | 显示全部楼层
本帖最后由 iffi123 于 2020-2-4 00:22 编辑

这几天玩廉价的温度湿度传感器DHT11(立创的赠品,前后领了3个), 试了不同方法玩,今晚再改进了定时器输入捕获功能,搞定,花时间研究寄存器含义,库函数原型,收获很大,顺便理清定时器的乱七八糟东西的条理。

这个春节没白过, stm32越来越好玩,还是需要琢磨底层硬件的原理才能愉快地玩。

刚从捷配领了2张5元打样券,琢磨弄点什么玩玩
回复 支持 反对

使用道具 举报

     
发表于 2020-2-4 02:47:52 | 显示全部楼层
祝贺楼主!
所谓单片机就是
单一芯片的微型计算机。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-4 11:54:10 | 显示全部楼层
C语言入门很容易。尽管编写单片机程序是一般很少考虑寄存器的问题,但实际编写程序时,还是要权衡利弊的,将变量分配到适合的区域。入门容易,深入就不易了。
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:49:07 | 显示全部楼层
dev-cpp写的程序可以直接往单片机里写?什么操作?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-3-29 16:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表