单片机怎么写入程序已写入的程序能提取吗

写单片机的程序用汇编好还是C 好? | Hello world!小组 | 果壳网 科技有意思
129102人加入此小组
我就看懂点汇编,一点不懂C,但是网上很多程序都是用C写的,有人说C 方便,简洁,可以用KEIL直接检测错误,也有的说,汇编可以直接控制硬件,方便什么的,哪个好啊?
+ 加入我的果篮
能看懂汇编不懂c是什么个情况。。。如果不懂c的话就只好用汇编了啊。。。
这个看个人习惯 ... ... 但是网上C写的例程比较多...学习比较方便
... ... ... 但是汇编涉及寄存器的控制 写得好的话效率要高些
你是怎么懂汇编不懂C的。。。
空间信息与数字技术专业
我也很好奇你是怎么懂汇编不懂 C 的。
的话:我也很好奇你是怎么懂汇编不懂 C 的。?
空间信息与数字技术专业
反了呜呜 我想说的是楼主啊。。。
汇编和C混合编比较有爱...
的话:汇编和C混合编比较有爱...汇编和C混合编最容易出错了,特别是可移植性问题,很头疼啊~
单片机就不要考虑移植了吧 mcs51和avr的汇编指令、以及c代码中的硬件相关部分都完全不能移植啊!
其实可以用c++写.
的话:汇编和C混合编最容易出错了,特别是可移植性问题,很头疼啊~表示之前木有遇到你说的容易出错的问题...每次都弄得蛮好的~单片机系统比较小基本不会去考虑可移植性...【挠头...如果非要讲代码移植的话~同一款传感器连不同单片机的代码都类似~接口写的好一点还是可以直接移植的~
既然你只懂汇编,不会C,那就用汇编吧
的话:能看懂汇编不懂c是什么个情况。。。如果不懂c的话就只好用汇编了啊。。。引用
的话:你是怎么懂汇编不懂C的。。。引用
的话:我也很好奇你是怎么懂汇编不懂 C 的。我自学的汇编,书都是汇编的,做了一些制作都是用汇编,所以只会汇编
的话:汇编和C混合编比较有爱...汇编和C可以在Keil里面混合用吗?
入门阶段?
起码有8位或者16位的实验板了吧。那么,多做试验是王道。C的可读性更好,汇编执行效率更高(前提得搞清楚寄存器、接口、存储器、算法等,逻辑思维要紧密些)
通信专业博士生,编程爱好者
能用C就用C,除非对效率要求极高
的话:入门阶段? 起码有8位或者16位的实验板了吧。那么,多做试验是王道。C的可读性更好,汇编执行效率更高(前提得搞清楚寄存器、接口、存储器、算法等,逻辑思维要紧密些)实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.
通信专业博士生,编程爱好者
的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.51跑C无压力啊,看你干嘛了,绝大部分情况用C就够了,用汇编写程序太累了
的话:51跑C无压力啊,看你干嘛了,绝大部分情况用C就够了,用汇编写程序太累了
哦 酱紫啊,我看看找个C的书学学.
的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.“hello world” 出来了,继续把板上的实验做完呗。 然后考虑增加外部硬件,比如蜂鸣器(闹钟);LED阵列,写写滚动汉字(广告灯、多路可控硅编程的基础);针打(出租车计程器、超市收银条);串口/USB口/并口通信什么的……接着找一些小制作来玩,比如控制家庭中几路家电,无线控制的航模/车模什么的……
的话:“hello world” 出来了,继续把板上的实验做完呗。然后考虑增加外部硬件,比如蜂鸣器(闹钟);LED阵列,写写滚动汉字(广告灯、多路可控硅编程的基础);针打(出租车计程器、超市收银条);串口/USB口/并口通信什么的……接着找一些小制作来玩,比如控制家庭中几路家电,无线控制的航模/车模什么的……买了个ds1302有空的时候学学电子钟.LED点阵用另一个板子做了一个16*和595,洞洞板焊点阵真痛苦啊,飞线飞的想吐.百度上的关于点阵的论文坑爹啊,电路焊出来之后发现跟程序对不上号,多路可控硅是什么?
以硬件控制为主的还是用汇编吧我当年数指令计算时间的,不带跳转的一个指令周期,发生跳转的两个指令周期,那时听说有C可用,但我用的不是那种单片机(导师设计的硬件,我写程序,大约4千条指令,花了3个月吧)。
的话:以硬件控制为主的还是用汇编吧我当年数指令计算时间的,不带跳转的一个指令周期,发生跳转的两个指令周期,那时听说有C可用,但我用的不是那种单片机(导师设计的硬件,我写程序,大约4千条指令,花了3个月吧)。单片机不是用.hex文件吗?不是在像KEIL这样的软件里面编出.asm or .c的文件之后再编译成.hex的吗?你的汇编是用在电脑上的吗?
的话:以硬件控制为主的还是用汇编吧我当年数指令计算时间的,不带跳转的一个指令周期,发生跳转的两个指令周期,那时听说有C可用,但我用的不是那种单片机(导师设计的硬件,我写程序,大约4千条指令,花了3个月吧)。4K的指令,岂不是很要命?你编程的时候在旁边写注释吗?
的话:买了个ds1302有空的时候学学电子钟.LED点阵用另一个板子做了一个16*和595,洞洞板焊点阵真痛苦啊,飞线飞的想吐.百度上的关于点阵的论文坑爹啊,电路焊出来之后发现跟程序对不上号,多路可控硅是什么?……北航出版社有些教程,可能更适合你目前的情况,可惜人家改版了。去CSDN吧,在bbs上,硬件/嵌入式开发板块找“精华”部分与你感兴趣的。/*————————————————————————————————————*/可控硅是一种低电压控制高电压、高电流的电子器件。就开关作用而言,相当于无触点的机械式继电器。
另外,还有可控整流、逆变、变频、调压等电路应用。在玩具控制、灯光交互、家电控制等小制作上常用。慢慢来,先把弱电的实验项目做完。/*————————————————————————————————————*/面包板焊接、走线算不错。 但以后若涉及到高压部分,要做隔离的,增加绝缘、保护的。
的话:……北航出版社有些教程,可能更适合你目前的情况,可惜人家改版了。去CSDN吧,在bbs上,硬件/嵌入式开发板块找“精华”部分与你感兴趣的。/*————————————————————————————————————*/可控硅是一种低电压控制高电压、高电流的电子器件。就开关作用而言,相当于无触点的机械式继电器。 另外,还有可控整流、逆变、变频、调压等电路应用。在玩具控制、灯光交互、家电控制等小制作上常用。慢慢来,先把弱电的实验项目做完。/*————————————————————————————————————*/面包板焊接、走线算不错。 但以后若涉及到高压部分,要做隔离的,增加绝缘、保护的。好,我去瞧瞧,可控硅是这么回事,电子大楼里经常看见大牌子可控硅什么的.大学不是学这个专业的,脑子数学都不好,现在感到很吃力.
的话:单片机不是用.hex文件吗?不是在像KEIL这样的软件里面编出.asm or .c的文件之后再编译成.hex的吗?你的汇编是用在电脑上的吗?好像是叫“高奇”公司吧,单片机主要厂商起码十几个啊,虽然摩托若拉和英特尔比较著名。我用的是精简指令集单片机,我记得指令超过2K的时候跳转总是错误的,厂家邮寄了新版本的开发工具才解决。为什么要问写不写注释呢?虽然汇编和C++的语法不同,但在编程“方法”上面,我不觉得有任何区别,甚至于,与做任何其它事也没有区别。
的话:4K的指令,岂不是很要命?你编程的时候在旁边写注释吗?模块化,这是编程的第一要义。适用于任何语言,汇编、C、C++、Java、Script、C#……
的话:好像是叫“高奇”公司吧,单片机主要厂商起码十几个啊,虽然摩托若拉和英特尔比较著名。我用的是精简指令集单片机,我记得指令超过2K的时候跳转总是错误的,厂家邮寄了新版本的开发工具才解决。为什么要问写不写注释呢?虽然汇编和C++的语法不同,但在编程“方法”上面,我不觉得有任何区别,甚至于,与做任何其它事也没有区别。以前跟人家要了一个点阵的程序,木有注释,理解起来可费劲了.都说不同厂家生产的单片机,在汇编上也会有区别,但是我发现ATM的,intel的,STC的汇编都一样,是因为他们用的一个内核还是keil这个软件的事情?我出去走走啊,宅着找不到妹子.
的话:以硬件控制为主的还是用汇编吧我当年数指令计算时间的,不带跳转的一个指令周期,发生跳转的两个指令周期,那时听说有C可用,但我用的不是那种单片机(导师设计的硬件,我写程序,大约4千条指令,花了3个月吧)。往事不堪回首呀。遇到最难的,需要在对方一个中断中,完成部分TCP/IP包的解析与交互。代码倒是不长,千行以内,难的是死扣时间片呀、扣死时间片。换了几个算法,最优的实测结果还是低于理论值13.5%,于是年终奖就消失了…… 尼玛提高晶振频率、芯片档次提高点,又费不了几个钱。硬件规划不留余地,害不死人,也会害惨人……
的话:模块化,这是编程的第一要义。适用于任何语言,汇编、C、C++、Java、Script、C#……是,模块化的确很重要,我第一本书丝毫没提到模块化,学起来稀里糊涂的,第二本书上就讲到模块化,还用流程图在例子前面表示了一下,就明白了.
的话:往事不堪回首呀。遇到最难的,需要在对方一个中断中,完成部分TCP/IP包的解析与交互。代码倒是不长,千行以内,难的是死扣时间片呀、扣死时间片。换了几个算法,最优的实测结果还是低于理论值13.5%,于是年终奖就消失了……尼玛提高晶振频率、芯片档次提高点,又费不了几个钱。硬件规划不留余地,害不死人,也会害惨人……虽然你讲的我不懂,但是看着发毛,就像以前在一个D800穿过铁路桥的煤气中压管旁边砌墙的时候,一边管子的覆土塌方,一边大型机械要在管子上面走,一边还要开挖,头上整天悬着达摩克里斯之剑啊.
的话:汇编和C可以在Keil里面混合用吗?可以...
的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.弱弱的说...好丑→_→
的话:51跑C无压力啊,看你干嘛了,绝大部分情况用C就够了,用汇编写程序太累了表示赞同~用汇编的情况一般也就2种~某些蹩脚的传感器...还有就是某个传感器的代码自己用C搞不定,但是网上可以找到好用的汇编的...(*?︶?*)...嗯,我不会说我就是后一种情况的~
的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.我的爱板之一~我当然是来炫耀我焊的更漂亮的~~\(≧▽≦)/~
看写神马程序了,简单系统我会用汇编,复杂的用C汇编的优点是对硬件和定时的控制都很精准C的优点是便于阅读和移植
的话:我的爱板之一~我当然是来炫耀我焊的更漂亮的~~(≧▽≦)/~璞,正面很漂亮,背面把线都去掉用锡焊通就很赞啦
的话:璞,正面很漂亮,背面把线都去掉用锡焊通就很赞啦噗~其实这不是同一块板子...下面那块上木有单片机~~~第一次焊的时候闹着玩的~~\(≧▽≦)/~~~纯粹“显摆”我的整齐布线的~可惜现在纯软件了......不能画ECB焊电路板了...
的话:噗~其实这不是同一块板子...下面那块上木有单片机~~~第一次焊的时候闹着玩的~~(≧▽≦)/~~~纯粹“显摆”我的整齐布线的~可惜现在纯软件了......不能画ECB焊电路板了...也想显摆,可惜没存照,现在也是纯软件了。。提个问题单,是PCB.....O O
的话:也想显摆,可惜没存照,现在也是纯软件了。。提个问题单,是PCB.....O O.....手一哆嗦打错了...真丢人...【郁闷..................................
的话:我的爱板之一~我当然是来炫耀我焊的更漂亮的~~(≧▽≦)/~镁铝,你上面那个图中的上面那块板子,是贴片单片机的开发板吗?还有啊 ,请教你
8*8共阳的点阵焊接成16*16的 用单面洞洞板有什么好方法吗?
的话:镁铝,你上面那个图中的上面那块板子,是贴片单片机的开发板吗?还有啊 ,请教你 8*8共阳的点阵焊接成16*16的 用单面洞洞板有什么好方法吗?帅锅~上面那个是ARM7的某款...貌似是2103...自己搭的外围...我没自己焊过点阵...不好意思≧﹏≦或许你可以试试...线布在板的正面...焊点在另一面...至少好看些...
的话:帅锅~上面那个是ARM7的某款...貌似是2103...自己搭的外围...我没自己焊过点阵...不好意思≧﹏≦或许你可以试试...线布在板的正面...焊点在另一面...至少好看些...哦 好看和能用我认为是两个概念 正面我用来飞线了 图就不上了 省得你再吐槽
的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.买不起板子?我手欠买了这个51的板子,才30块钱,51现在很贵么引用
的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.
LZ跟我当初一样,开始接触Siliconlabs的C8051F的时候也是只会汇编,后来转自学MSP430后就改为用C了,现在基本不考虑汇编了,因为用的STM32,ST公司已经开发好了大量的外设库函数,直接使用就可以了
需要精确到时钟周期的指令用汇编写,其他指令用c写 多好
的话:买不起板子?我手欠买了这个51的板子,才30块钱,51现在很贵么\[blockquote\]引用的话:实验板?8位,16位!?买不起实验板,自己焊了一个,如果那也算实验板的话.30?在网上买的吗?我这里这样的板子都有买80的.我买STC烧写器的时候,感觉是被骗了,一个非常简单的玩意,卖40.非常非常简单.于是没有预算了.本着一切从简的原则抠门到底.我立志学C了.想做一个1602 DS1302 DS18B20的 电子钟学习学习,电路仿出来了.结果人家的C怎么也通不过,又看不懂,网上搜了一下C的占大多数,好不容易搜出个汇编的,改了引脚后,显示结果莫名其妙的.抓瞎的赶脚太难受了.立志学C
的话:30?在网上买的吗?我这里这样的板子都有买80的.我买STC烧写器的时候,感觉是被骗了,一个非常简单的玩意,卖40.非常非常简单.于是没有预算了.本着一切从简的原则抠门到底.我立志学C了.想做一个1602 DS1302 DS18B20的 电子钟学习学习,电路仿出来了.结果人家的C怎么也通不过,又看不懂,网上搜了一下C的占大多数,好不容易搜出个汇编的,改了引脚后,显示结果莫名其妙的.抓瞎的赶脚太难受了.立志学C不是,是在一家熟识的电子店里买的,板子30,我问老板蹭了一个单片机AT89S52,然后USBISP下载线是10块钱买的,女老板人很不错哦,我去买东西总是便宜我,额,是不是有点奇怪的感觉
的话:30?在网上买的吗?我这里这样的板子都有买80的.我买STC烧写器的时候,感觉是被骗了,一个非常简单的玩意,卖40.非常非常简单.于是没有预算了.本着一切从简的原则抠门到底.我立志学C了.想做一个1602 DS1302 DS18B20的 电子钟学习学习,电路仿出来了.结果人家的C怎么也通不过,又看不懂,网上搜了一下C的占大多数,好不容易搜出个汇编的,改了引脚后,显示结果莫名其妙的.抓瞎的赶脚太难受了.立志学CSTC有烧写器么?STC的单片机不都是串口下载程序么,一根串口线足矣,倒是我这个AT89S52是通过SPI下载程序的,所以需要一根USBISP下载线
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:查看: 1281|回复: 11
对DS1302进行写入和读取操作的程序
这是我写的,不知道为什么编译之后不对呢????
QQ截图51.png (7.32 KB, 下载次数: 5)
11:36 上传
QQ截图05.png (8.83 KB, 下载次数: 9)
11:36 上传
 ACC是累加器吗?如果是的话在计数变量 i 自加的时候,就是 i++ 运算,会用到累加器,之前存的数据就没了……正确的做法是for(i=8;i&0;i--)
ACC是累加器吗?如果是的话在计数变量 i 自加的时候,就是 i++ 运算,会用到累加器,之前存的数据就没了… ...
按照您的说法改正了,但还是不行
按照您的说法改正了,但还是不行
把ACC=ACC&&1;放到前面,就是进了for以后的第一句。
把ACC=ACC&&1;放到前面,就是进了for以后的第一句。
按照您说的,还是不行,您有时间帮我看看我的程序吗??我使用keil4编写的,麻烦您了,我编译的结果是,无论初始值是什么,数码管显示的都是0,并且不动,麻烦您了。
19:40 上传
点击文件名下载附件
26.35 KB, 下载次数: 2
按照您说的,还是不行,您有时间帮我看看我的程序吗??我使用keil4编写的,麻烦您了,我编译的结果是, ...
搞定。~~不过我的电路不太一样,但是发现DS1302连到P3那几个口不好用,换到P2的就好了,估计是数码管开关的时候引脚控制牵连到DS1302了。现在DS1302通信和初始化都没问题了(接在P2的时候)。但是因为数码管电路不太一样,所以最后具体的还要你自己试试。要是还不行……可以再来找我。
23:52 上传
点击文件名下载附件
30.11 KB, 下载次数: 13
搞定。~~不过我的电路不太一样,但是发现DS1302连到P3那几个口不好用,换到P2的就好了,估计是数码管开关 ...
恩恩,搞定了,真是太谢谢你啦~~~
搞定。~~不过我的电路不太一样,但是发现DS1302连到P3那几个口不好用,换到P2的就好了,估计是数码管开关 ...
恩恩,可以了,真是太谢谢你啦~~~~~~
搞定。~~不过我的电路不太一样,但是发现DS1302连到P3那几个口不好用,换到P2的就好了,估计是数码管开关 ...
恩恩,已经可以了,真是太谢谢你啦~~~~~~
搞定。~~不过我的电路不太一样,但是发现DS1302连到P3那几个口不好用,换到P2的就好了,估计是数码管开关 ...
大神,,,我这前两天还行,但是今天就不行了,IO口换了还是不行,显示就是8888,求指导
(3.49 MB, 下载次数: 15)
11:46 上传
本帖最后由 王朗的诱惑 于
14:36 编辑
大神,,,我这前两天还行,但是今天就不行了,IO口换了还是不行,显示就是8888,求指导
数据不能是88吧……会不会是显示问题。数码管显示调好了么?话说这面包板……好眼熟呀……你也用面包板玩……
//********向1302写数据*********
void Write1302(uchar dat)
&&SCLK=0;& && && &&&//拉低SCLK,为脉冲上升沿写入数据做好准备
&&delay1(1);& && & //稍微等待,使硬件做好准备
&&for(i=0;i&8;i++)& && &//连续写8个二进制位数据
& &IO=dat&0x01;& & //取出dat的第0位数据写入1302
& &delay(1);& && & //稍微等待,使硬件做好准备
& &SCLK=1;& && && &&&//上升沿写入数据
& &delay1(1);& && &//稍微等待,使硬件做好准备
& &SCLK=0;& && && &&&//重新拉低SCLK,形成脉冲
& &dat&&=1;& && && & //将dat的各数据位右移1位,准备写入下一个数据位
void WriteSet1302(uchar Cmd,uchar dat)
& &RST=0;& && && &&&//禁止数据传递
& &SCLK=0;& && && & //确保写数居前SCLK被拉低
& &RST=1;& && && &&&//启动数据传输
& &delay1(1);& &&&//稍微等待,使硬件做好准备
& &Write1302(Cmd);&&//写入命令字
& &Write1302(dat);&&//写数据
& &SCLK=1;& && && & //将时钟电平置于已知状态
& &RST=0;& && && &&&//禁止数据传递
uchar Read1302(void)
& &uchar i,
& &delay(1);& && & //稍微等待,使硬件做好准备
& &for(i=0;i&8;i++)& &//连续读8个二进制位数据
& & dat&&=1;& && & //将dat的各数据位右移1位,因为先读出的是字节的最低位
& & if(IO==1)& & //如果读出的数据是1
& & dat|=0x80;& & //将1取出,写在dat的最高位
& & SCLK=1;& && & //将SCLK置于高电平,为下降沿读出
& & delay1(1);&&//稍微等待
& & SCLK=0;& && & //拉低SCLK,形成脉冲下降沿
& & delay1(1);&&//稍微等待
&&& && &&&//将读出的数据返回
uchar&&ReadSet1302(uchar Cmd)
&&RST=0;& && && && && &&&//拉低RST
&&SCLK=0;& && && && && & //确保写数居前SCLK被拉低
&&RST=1;& && && && && &&&//启动数据传输
&&Write1302(Cmd);& && & //写入命令字
&&dat=Read1302();& && & //读出数据
&&SCLK=1;& && && && &&&//将时钟电平置于已知状态
&&RST=0;& && && && && &//禁止数据传递
&&& && && & //将读出的数据返回
void Init_DS1302(void)
WriteSetE,0x00);& && && && && &&&//根据写状态寄存器命令字,写入不保护指令
WriteSet,((0/10)&&4|(0%10)));& &//根据写秒寄存器命令字,写入秒的初始值
WriteSet,((45/10)&&4|(45%10)));& &//根据写分寄存器命令字,写入分的初始值
WriteSet,((15/10)&&4|(15%10))); //根据写小时寄存器命令字,写入小时的初始值
WriteSet,((29/10)&&4|(29%10))); //根据写日寄存器命令字,写入日的初始值
WriteSet,((11/10)&&4|(11%10))); //根据写月寄存器命令字,写月的初始值
WriteSetc,((15/10)&&4|(15%10)));& &//.....年.....................年.........
Powered by

我要回帖

更多关于 单片机如何写入程序 的文章

 

随机推荐