精华内容
下载资源
问答
  • 单片机高级语言C51 Windows 环境编程与应用.pdf
  • 《单片机高级语言C51 Windows 环境编程与应用》   详细说明 摘要: 本书以Keil公司最新版本的C51编译器为核心,阐述了在Windows环境下采用单片机高级语言C51进行应用系统程序设计的基本原理和方法,详细介绍了...

    《单片机高级语言C51 Windows 环境编程与应用》

     

    详细说明
    摘要:
    本书以Keil公司最新版本的C51编译器为核心,阐述了在Windows环境下采用单片机高级语言C51进行应用系统程序设计的基本原理和方法,详细介绍了KeilC51的Windows集成开发环境Vision51和软件仿真器dScope51的强大功能和具体使用方法。在Windows集成开发环境Vision51中,可以完成从源程序编写、编译、连接定位到目标文件的仿真调试等的全部工作。dScope5l是一种基于Windows的多窗口软件仿真器,它可以在完全没有8051单片机硬件的情况下模拟调试各种应用程序,即使对单片机内部特殊集成功能的编程,也可以找到对应的模拟窗口。本书对最新版本C51编译器新增加的控制命令作了全面介绍;给出了最新C51运行库函数及其应用范例;对KeU C51的各种应用工具,如BL51连接定位器、A51宏汇编器、LIB51库管理程序以及OH51符号转换程序等都作了详细介绍;还介绍了单片机实时多任务操作系统RTX51及其子集RTX5l TINY的具体功能与应用方法。
      
    本书强调先进性和实用性。全书各章列举了大量程序实例,并附赠一张配套光盘。因此本书既适合广大从事单片机应用系统开发研制的工程技术人员的阅读,也可以作为高等工科院校相应专业大学生或研究生的教学用书。
    目录
    第1章 8051单片机与c51语言的基础
    1.1 8051单片机的基本结构与存储器组织
    1.2 c51语言的特点
    1.2.1 概述
    1.2.2 c51的基本程序结构
    1.2.3 windows环境下的编程和调试
    第2章 c51程序设计基础
    2.1 标识符与关键字
    2.2 c51程序设计的基本语法
    2.2.1 数据类型
    2.2.2 常量
    2.2.3 变量及其存储模式
    2.2.4 用typedef重新定义数据类型
    2.2.5 运算符与表达式
    2.2.6 基本语句
    2.3 函数
    2.3.1 函数的定义
    2.3.2 函数的调用
    2.3.3 函数的递归调用与再人函数
    2.3.4 中断服务函数与寄存器组定义
    2.3.5 函数变量的存储方式
    2.3.6 函数的参数和局部变量的存储器模式
    2.4 数组与指针
    2.4.1 数组的定义与引用
    2.4.2 字符数组
    2.4.3 数组作为函数的参数
    2.4.4 指针的概念
    2.4.5 数组的指针
    2.4.6 指针的地址计算
    2.4.7 函数型指针
    2.4.8 返回指针型数据的函数
    2.4.9 指针数组与指针型指针
    2.4.10 抽象型指针
    2.5 结构与联合
    2.5.1 结构变量的定义与引用
    2.5.2 结构变量的初值
    2.5.3 结构数组
    2.5.4 结构型指针
    2.5.5 结构与函数
    2.5.6 联合变量的定义与引用
    2.6 预处理器
    2.6.1 宏定义
    2.6.2 文件包含
    2.6.3 条件编译
    2.6.4 其他预处理命令
    第3章 windows集成开发环境
    3.1 文件管理编译环境μvision51
    3.2 μvision51的下拉菜单
    3.2.1 file菜单
    3.2.2 edit菜单
    3.2.3 project菜单
    3.2.4 run菜单
    3.2.5 options菜单
    3.2.6 tools菜单
    3.2.7 window菜单
    3.2.8 help菜单
    3.3 软件仿真器dscope5l
    3.3.1 me菜单
    3.3.2 view菜单
    3.3.3 settlp菜单
    3.3.4 peripherals菜单
    3.3.5 help菜单
    3.4 cpu动态驱动库文件
    3.4.1 8051.dll/8052.dll
    3.4.2 8051fx.dll
    3.4.3 80515.dll/80515a.dll
    3.4.4 80517.dll/80517a.dll
    3.4.5 80552.dll
    3.4.6 80751.dll
    3.4.7 80781.dll
    3.4.8 80410.dll
    3.4.9 80320.dll
    3.5 dscope51的命令
    3.5.1 显示和更新存储器内容命令
    3.5.2 用户程序执行控制命令
    3.5.3 断点管理命令
    3.5.4 其他通用命令
    3.6 dscop5l的表达式
    3.6.1 表达式的组成
    3.6.2 dscope51表达式与c语言表达式之间的差别
    3.6.3 dscope51表达式应用示例
    3.7 dscope51的函数
    3.7.1 用户函数
    3.7.2 内部函数
    3.7.3 信号函数
    3.7.4 dscope51函数与c5l函数的差别
    第4章 c51编译器
    4.1 c51编译器控制命令详解
    4.1.1 源控制命令
    4.1.2列表控制命令
    4.1.3 目标控制命令
    4.2 c5l编译器的数据调用协议
    4.2.1 数据在内存中的存储格式
    4.2.2 目标代码的段管理
    4.2.3 再入函数的栈结构
    4.2.4 与汇编语言程序的接口
    4.2.5 与pl/m51语言程序的接口
    4.2.6 配置文件
    4.2.7 c51编译器的限制
    4.3 c51的库函数
    4.3.1 字符函数ctype.h
    4.3.2 一般i/o函数stdlo.h
    4.3.3 字符串函数string.h
    4.3.4 标准函数stdlib.h
    4.3.5 数学函数math.h
    4.3.6 绝对地址访问absacc.h
    4.3.7 内部函数intrins.h
    4.3.8 变量参数表stdarg.h
    4.3.9 全程跳转setjmp.h
    4.3.10 访问sfr和sfr—bit地址的regxxx.h
    4.4 c5l编译器的特殊支持
    4.4.1 具有双数据指针的amd/dallas单片机
    4.4.2 具有高速算术处理器的siemens单片机
    4.4.3 具有2kb片内rom的philips单片机
    第5章 宏汇编器a51
    5.1 符号与表达式
    5.2 汇编伪指令
    5.2.1 符号定义指令
    5.2.2 保留和初始化存储器空间的指令
    5.2.3 控制程序连接的指令
    5.2.4 控制汇编状态的指令
    5.2.5 段选择指令
    5.3 宏处理
    5.3.1 宏定义
    5.3.2 宏调用
    5.3.3 应用实例
    5.4 汇编控制命令
    5.4.1 首要控制命令
    5.4.2 一般控制命令
    5.4.3 条件汇编命令
    第6章 目标文件的连接与转换
    6.1 连接定位器bl51
    6.2 连接定位控制命令详解
    6.2.1 列表控制命令
    6.2.2 连接控制命令
    6.2.3 定位控制命令
    6.2.4 高级语言控制命令
    6.2.5 分组控制命令
    6.2.6 bl51的分组配置
    6.2.7 rtx51控制命令
    6.3 符号转换程序
    6.3.1 intel hex文件转换程序oh51
    6.3.2 分组目标文件转换程序oc51
    6.4 库管理器lib5l
    第7章 rte51实时多任务操作系统
    7.1 rtx51一般介绍
    7.2 rtx51技术参数
    7.3 使用rtx51 tiny的要求和限定
    7.4 rtx51 tiny的任务管理
    7.5 rtx51 tiny的配置
    7.6 rtx51 tiny的系统函数
    7.7 rtx51 tiny的系统调试
    第8章 windows阳环境下c51应用编程技巧与实例
    8.1 windows集成开发环境的基本应用
    8.1.1 工作环境与控制命令设置
    8.1.2 编写c51应用程序的基本原则
    8.2 c5l应用中的一些常见问题与解决方法
    8.2.1 c51程序设计中容易出错的地方
    8.2.2 有关c51的若干实际应用技巧
    8.3 8051单片机串行接口扩展应用编程
    8.3.1 用8051串行口扩展的矩阵键盘
    8.3.2 利用8051串行口实现多机通信
    8.3.3 串行接口5位led驱动器mcl4489的应用
    8.4 软件模拟ic总线的c51读写程序
    8.4.1 ic总线简介
    8.4.2 ic总线通用读写程序
    8.5 8051单片机并行接口扩展应用编程
    8.5.1 打印输出接口及其驱动程序
    8.5.2 d/a及a/d转换接口及其驱动程序
    8.5.3 用可编程芯片8155实现i/o接口扩展
    8.6 80c552单片机中a/d转换器的应用
    8.6.1 80c552单片机简介
    8.6.2 80c552内部adc的应用
    8.6.3 使用80c552内部adc时印刷电路板的设计要点
    8.6.4 使用80c552内部adc的c51驱动程序
    8.7 87c752单片机在气流量测量中的应用
    8.7.1 87c752单片机简介
    8.7.2 气流量测量仪表的硬件设计
    8.7.3 气流量测量仪表的软件设计
    附录a keil c51与ansi c的差别
    附录b keil c51不同版本的差别
    附录c 代码优化
    附录d 关于配套光盘及硬件评估板
    参考文献


    《单片机高级语言C51 Windows 环境编程与应用》详情见PDF文档(点击PDF文档下载) 


     ---★ 本文转自『IT在线:
    http://www.itolhome.cn』→原文地址:http://www.itolhome.cn/thread-80162-1-4.html

    展开全文
  • 写这篇文章, 完全是个人想法,并不是想冒天下之大不韪, 也不是我要开启诸如此类的论战: Windows和Linux哪个更好? C语言和C++语言哪个更好? 我没有这么无聊, 也没有这么无趣。 我只随便聊聊随便写写而已。

            写这篇文章, 完全是个人想法,并不是想冒天下之大不韪, 也不是我要开启诸如此类的论战:

            Windows和Linux哪个更好?

            C语言和C++语言哪个更好?


            我没有这么无聊, 也没有这么无趣。 我只随便聊聊随便写写而已。


            在学校的时候, 接触的都是Windows环境下的编程, 搞多了, 觉得就那样, 兴趣不大, 而且现在工作基本与Windows环境编程无关, 也好。 不过呢? 哪天说不定又玩起Windows下的编程呢。 我还是要说, Windows是一个伟大的OS.

            

            以前工作的时候, C和C++代码混用, 指针满天飞, 各种异常判断、危险函数, 至今仍是历历在目啊。 现在的工作, 基本都是C++, 也好, 少用C.  我还是要说, C语言是一门伟大的语言。


            好了, Windows和C, 不是你们不好, 是实际开发工作我几乎用不到你们了。  喷子们请闭嘴, 我说的是不是远离Windows, 而是远离Windows环境开发。


            还是那句话, 没有好不好, 只有适合不适合。






            





    展开全文
  • #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 重定向标准输出和错误输出( 标准c库的函数 ,linux下一般不用,直接在bash下重定向io就行了) freopen(".\\job_calc_...

    _beginthreadex是微软的C/C++运行时库函数,CreateThread是操作系统的函数。

    _beginthreadex通过调用CreateThread来实现的,但比CreateThread多做了许多工作。

    注意:若要创建一个新线程,绝对不要使用CreateThread,而应使用_beginthreadex.

               Why?

               考虑标准C运行时库的一些变量和函数,如errno,这是一个全局变量。全局变量用于多线程会出什么事,你一定知道的了。故必须存在一种机制,使得每个线程能够引用它自己的errno变量,又不触及另一线程的errno变量.

               _beginthreadex就为每个线程分配自己的tiddata内存结构。该结构保存了许多像errno这样的变量和函数的值、地址(自己看去吧)。通过线程局部存储将tiddata与线程联系起来。具体实现在Threadex.c中有。 结束线程使用函数_endthreadex函数,释放掉线程的tiddata数据块。 

    出处:http://topic.csdn.net/t/20000926/10/31810.html

    设置线程名称

    void SetThreadName(const char* format, ...)
    {
    	// This isn't supported on nix?
    	va_list ap;
    	va_start(ap, format);
    #ifdef WIN32
    	typedef struct tagTHREADNAME_INFO
    	{
    		DWORD dwType; // must be 0x1000
    		LPCSTR szName; // pointer to name (in user addr space)
    		DWORD dwThreadID; // thread ID (-1=caller thread)
    		DWORD dwFlags; // reserved for future use, must be zero
    	} THREADNAME_INFO;
    	char thread_name[200];
    	vsnprintf(thread_name, 200, format, ap);
    
    	THREADNAME_INFO info;
    	info.dwType = 0x1000;
    	info.dwThreadID = GetCurrentThreadId();
    	info.dwFlags = 0;
    	info.szName = thread_name;
    	__try
    	{
    #ifdef _WIN64
    		RaiseException(0x406D1388, 0, sizeof(info)/sizeof(DWORD), (ULONG_PTR*)&info);
    #else
    		RaiseException(0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info);
    #endif
    	}
    	__except(EXCEPTION_CONTINUE_EXECUTION)
    	{ }
    #endif
    	va_end(ap);
    }

    隐藏dos窗口

    #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
    重定向标准输出和错误输出(标准c库的函数,linux下一般不用,直接在bash下重定向io就行了)

    freopen(".\\job_calc_similar.log", "a+", stdout);
    freopen(".\\job_calc_similar.log", "a+", stderr);

    展开全文
  • 第三章 Windows环境的网络编程;3.1 Windows Sockets规范;3.1.1概述;3.1.2 Windows Sockets规范;3.1.2 Windows Sockets规范;3.1.2 Windows Sockets规范;3.1.2 Windows Sockets规范;3.1.2 Windows Sockets规范;
  • Windows环境变量编程设定 本文由浅入深的讲解环境变量的定义、使用。对Win98、WinMe、NT、XP、Win2003的不同系统下的应用进行了全面的分析。并以编程方式实现设置Windows环境变量。这对于一般程序编制和软件安装...

    原文出处:http://blog.csdn.net/talker/article/details/54175

    Windows环境变量编程设定

    本文由浅入深的讲解环境变量的定义、使用。对Win98WinMeNTXPWin2003的不同系统下的应用进行了全面的分析。并以编程方式实现设置Windows环境变量。这对于一般程序编制和软件安装程序编制都有重要的意义。

    什么是用户环境变量、什么是系统环境变量:

    环境变量的定义(参考msdn):环境变量是一个string组成的array它是计算机的一系列设置(setting,环境变量用以指定文件的搜索路径、临时文件目录、特定应用程序(application-specific)的选项和其他类似信息。默认情况下,每个进程(process)的环境变量拷贝自父进程。当然父进程也能够为子进程指定不同的环境变量。

    环境变量控制着多种程序的行为。例如,TEMP 环境变量指定程序放置临时文件的位置。任何用户都可以添加、修改或删除用户的环境变量。但是,只有管理员才能添加、修改或删除系统环境变量。使用"控制面板"中的"系统"可以自定义下列变量:(1)用于登陆用户名(logged_on_user_name用户环境变量;对于特定计算机的每个用户来说,用户环境变量是不同的。变量包括由用户设置的任何内容,以及由应用程序定义的所有变量,例如应用程序文件的路径。(2系统环境变量;管理员可以更改或添加应用到系统(从而应用到系统中的所有用户)的环境变量。安装期间,Windows安装程序配置默认的系统变量,例如 Windows 文件的路径。

    用户环境变量的作用、系统环境的作用:

    举例往往是说明一个问题的最好办法,在Win2000下,我们观察"PATH"这个环境变量,

    PATH= %SystemRoot%/system32。但是 "SystemRoot"又是一个环境变量, SystemRoot =d:/winnt,所以环境变量"TMP"的最终表征的路径为"d:/winnt/SYSTEM32".如我们手动编辑系统环境变量PATH。修改后PATH=%SystemRoot%/system32;C:/ Program Files。然后设计一个代码,实现浏览器打开目录"C:/Program Files"。这仅涉及一个简单的ShellExecute API

    ShellExecute(NULL, "explore", "Internet Explorer",NULL, "c://Program Files", SW_SHOWNORMAL);

    等价于

    ShellExecute(NULL,"explore","Internet Explorer",NULL,"%path%",

    SW_SHOWNORMAL);

    但是后者有很大的灵活性,不修改代码只修改环境变量path的就能完成新的功能。这对于软件安装程序有着很好的意义。熟练的应用环境变量,有助于写出灵活、模块化的软件。

    以上虽然以Win2000为例讲解,但同样适用于其他Windows系统,只是win98系列设置环境变量的方式不同,详情见下节:设定环境变量的算法。

    设定环境变量的算法:

    对于对Win98WinMeNTXPWin2003一揽子操作系统,可以分为两类:win98系列,NT系列。它们设定系统环境变量有着本质的不同。但对于设置当前进程的环境变量是一样的。

    A 关于系统环境变量

    1win98系列设定系统环境变量的算法:

    熟悉win98的都清楚,在C盘一般都有一个"AutoExec.bat"文件,系统启动都要执行它,所以这里是设定系统环境变量的地方,添加一个环境变量只是添加一行

    SET PATH=C:/FOLDER1/FOLDER2类似的语句。如果添加一个路径,那么就是类似的语句

    SET PATH=C:/FOLDER1/FOLDER2;D:/FOLDER3 。系统要重新启动更改才能有效。

    2NT系列的设定系统环境变量的算法:

    首先分析手动编辑环境变量的原理,通过阅读MSDN文档,发现系统其实在注册表

    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment

    保存系统环境变量,当手动修改完毕时,选择"确定"按钮退出,向系统所有上级窗口发送WM_SETTINGCHANGE消息。系统不需要重新启动。

    [插曲]:如何向系统所有上级窗口发送WM_SETTINGCHANGE消息?我仔细观看MSDN代码也没有给出一个例子。只能自己想办法,我编写了一个程序专门接受发送给它的WM_SETTINGCHANGE的消息,代码如下:

    OnSettingChange(UINT uFlags, LPCTSTR lpszSection){….}

    然后手动修改系统环境变量,这是程序接收到消息,分析uFlags, lpszSection两个参数,得知uFlags=0, lpszSection="Environment";

    然后模仿该消息,向系统所有上级窗口发送WM_SETTINGCHANGE消息。

    B 关于当前的进程的环境变量

    这个范围的环境变量很简单,进程执行时该变量有效,退出时就失效。所涉及的API就限于GetEnvironmentVariableSetEnvironmentVariableGetEnvironmentStringsSetEnvironmentStrings等。

    展开全文
  • 最近在学习windows内核编程,为了搭建一个比较完善的开发环境,使内核编程比较方便,我在网上搜集了很多资料,最后整理出自己的一套比较不错的方案,现在拿出来和大家分享 1.首先安装vs2008 ,这个就不用多说了...
  • 文章目录前言步骤步骤一步骤二步骤三连接测试步骤四步骤五总结 前言 作为一个编写Windows程序的开发人员,对Windows驱动开发 ...开始学习Windows驱动开发,第一步当然是环境搭建了。因为笔者也在驱动环境搭建上也吃过
  • windows环境下C语言socket编程

    万次阅读 多人点赞 2018-07-03 15:27:00
    最近由于实验需要,要求写一个c程序与java程序通信的软件,为了测试首先写了一个windows环境下c语言的socket(tcp)通信程序。首先socket通信的步骤: 图一 socket通信步骤(转载) 图二 三次握手协议(转载) 图...
  • 一、需求:之前是在Linux环境下进行Python的学习,每次开虚拟机觉得有点麻烦,希望可以直接在Windows的dos命令行下进行Python编程学习。二、安装软件直接从官网下载这两个软件安装,直接下一步就可以安装了。安装vim...
  • Windows环境下Unicode编程总结   UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。   UNICODE编译设置: C/C++, Preprocessor ...
  • Windows环境下C++编程(C++ Windows Programming)-2016年英文原版,0积分
  • Windows应用程序不支持标准输出函数(如printf),应用程序包括文字在内的所有数据均是以图形方式“绘制”到窗口上的。 Windows通过图形设备接口GDI对图形输出进行支持。GDI由几百个函数和与此相关的数据类型、宏...
  • windows环境下用c++实现socket编程

    千次阅读 2018-07-19 16:45:53
    windows环境下用c++实现socket编程
  • 最近在学习windows内核编程,为了搭建一个比较完善的开发环境,使内核编程比较方便,我在网上搜集了很多资料,最后整理出自己的一套比较不错的方案,现在拿出来和大家分享 1.首先安装vs2008,这个就不用多说了。在...
  • 原创:Qt在Windows下的三种编程环境搭建

    万次阅读 多人点赞 2013-12-16 23:09:13
    (注:支持windows环境的QT库有mingw,vs2010,vs2008等版本) 当安装提示Find installed MinGW时,请用户指向路径C:\Qt\mingw。 5、以上步骤完成后,执行桌面快捷方式Qt Creator。 (1)进入软件->菜单->工具->选项->...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,515
精华内容 4,206
关键字:

windows环境编程