上位机到下位机

    在大学里,一向没有重视计算机体系结构之类的课程,以为光靠数据结构,编译原理,操作系统,软件工程等几大主课就能解决一切问题。最近因工作需要,接触到单片机编程。才发现硬件知识及其匮乏,一些最基本的概念都不清楚,花了不少的时间才算初步上手。
    基本上,在单片机上用C编程和以前用TC的时候差不多,主流程用一般的结构化编程的思路就能搞定,当把芯片功能封装完成后,剩下的就是纯粹编码任务了。
    单片机的功能实现全靠主CPU和外围芯片,所以编程的基础就是封装其硬件功能。需要的基础知识有:能基本看懂硬件原理图,了解管脚功能,看懂芯片的资料,了解其工作流程,寄存器功能,操作时序图,就能进行功能封装了。在封装的时候要注意一点的是功能的独立性,并且尽量不要用到全局变量。比如说为Flash芯片做读写操作,接口一般情况就可以这样写:flash_read(unsigned char *pBuffer, int read_size, ...(地址相关参数)); flash_write(unsigned char *pBuffer, int write_size, ...(地址相关参数)); 曾经见过不使用指针传递参数,而分配一个全局数组,将读写内容在数组中操作,另外再进行函数调用的做法。一般程序新手不习惯使用指针,而使用其他手段进行数据传递,这会导致程序的简洁性与使用的方便性大幅下降。
    在以前一直是用VC写上位机程序,C++用得比较多,用回C有点不太习惯,刚开始有点思路混乱,还好写的程序规模都很小一般5K行内就能搞定,所以也算比较轻松。不过用仿真器Debug的速度真有点不习惯,走一步要好久。这时才注意到编码的正确性也是非常重要的。
    单片机程序一般是单任务的,但是也是可以使用操作系统,为了实时性的要求,使用的多是ucos,ucLinux之类的RTOS。在移植操作系统的时候,大多要考虑硬件平台架构和一些系统底层的问题,这和上位机应用编程是大不一样的,最近会接触这方面的内容比较多,看来学习的过程不会缺少坎坷的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在同一界面下放上所有的按钮去控制,按钮间的逻辑关系有点复杂。即使做出来用户用着也会感觉有些别扭,据此我们干脆分成几个界面来做。(总控与退出按钮不要也行) 第一界面:楼体、环境、退出; 第二界面:楼体1、楼体2、返回、退出; 第三界面:户型A01---A04、B01---B04、返回、退出; 第四界面:户型2-01---2-04、返回、退出。 按钮1>>楼体, 按钮2>>环境; 按钮3>>楼体1, 按钮4>>楼体2, 按钮5>>返回; 按钮6---按钮13>>[A01---A04][B01---B04], 按钮14>>返回; 按钮15---按钮18>>[2-01---2-04],按钮19>>返回; (0-F路为16继电器输出) 程序动作如下: 第一界面: 1. 按钮1开-开[0]路>>弹出第二界面;按钮1关-关[0]。 2. 按钮2开-开[1]路,按钮2关-关[1]路。 第二界面: 1. 点击按钮3-开[2]路,>>弹出第三界面。 2. 点击按钮4-开[3]路,>>弹出第四界面。 3. 点击按钮5>>返回第一界面。 第三界面: 1. 按钮6开-开[4]路,按钮6关-关[4]路。 2. 按钮7开-开[5]路,按钮7关-关[5]路。 3. 按钮8开-开[6]路,按钮8关-关[6]路。 4. 按钮9开-开[7]路,按钮9关-关[7]路。 5. 按钮10开-开[8]路,按钮10关-关[8]路。 6. 按钮11开-开[9]路,按钮11关-关[9]路。 7. 按钮12开-开[A]路,按钮12关-关[A]路。 8. 按钮13开-开[B]路,按钮13关-关[B]路。 9. 点击按钮14-关[2][4-B]路>>返回第二界面。 第四界面: 1. 按钮15开-开[C]路,按钮15关-关[C]路。 2. 按钮16开-开[D]路,按钮16关-关[D]路。 3. 按钮17开-开[E]路,按钮17关-关[E]路。 4. 按钮18开-开[F]路,按钮18关-关[F]路。 9. 点击按钮19-关[3][C-F]路>>返回第二界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值