1。KEIL中的指针:

基于存储器的指针:数据类型 [指向存储区]  *[ 指针存储区]指针变量

char xdata * px         //px本身存在于自动分配的空间,一般位于data中,指向的内容位于xdata
char xdata * data px    //px本身存在于data空间,指向的内容位于xdata
data char xdata * px =char xdata *data px;

data空间:内部ram 0~128字节

xdata空间:外部扩展ram, 用movx 及间址访问

一般指针两种类型:默认是万能的,分配三个字节空间

指针本身地址

+0(0X05)

+1(0X06)

+2(0X07)

存放内容

数据类型

高8位数据

低8位数据

例:OSTCBCur(0X05=0X000014)

MOV  R0,#LOW (OSTCBCur)       //取得指针的最低地址;R0=0X05

2。汇编相关

$NOMOD51            // disable predefined  registers//禁能预定义的  寄存器
#include <reg52.h>    // include CPU definition file (for example, )// 包含 CPU 定义文件(例如,)

EXTRN CODE (code_symbol)    ; May be a subroutine entry declared in
                            ; CODE segments or with CODE directive.
                            ; 可以是在 CODE 段中或用伪指令CODE
                            ; 声明的子程序入口
EXTRN DATA (data_symbol)    ; May be any symbol declared in DATA segments
                            ; segments or with DATA directive.
                            ; 可以是在 DATA 段中或用伪指令 DATA
                            ; 声明的的任意符号。
PUBLIC data_variable        ; 此处,你可以把符号输出到其它模块
PUBLIC code_entry           ; 此处,你可以把符号输出到其它模块

NAME   ?C_STARTUP           ;// NAME 模块名 ;与文件名无关          

       ?C_C51STARTUP    SEGMENT   CODE        ; 把 ?C_C51STARTUP     定义在CODE 中。
       ?STACK            SEGMENT   IDATA      ; 把 ?STACK 定义在IDATA RAM 中。
                RSEG    ?STACK                ;//切换到 ?STACK 段
                        DS                   ;//保留一个字节
                EXTRN CODE (?C_START)
                PUBLIC  ?C_STARTUP

                CSEG    AT                  ;程序绝对起始位置0000

定义重定位段 必须按照C51 格式定义汇编遵守C51 规范段名格式为 : ?PR?函数名?模块名
;声明引用全局变量和外部子程序 注意关键字为EXTRN 没有E
全局变量名直接引用
无参数/无寄存器参数函数 FUNC
带寄存器参数函数 _FUNC
重入函数 _?FUNC

3.keil的printf默认为向串口输出.在一些特定的时候需要软件调试一下我们的程序是否有问题,我们需要使用printf()来输出过程数据做跟踪可是在keil里我发现直接就写上printf("start debug");根本不能输出到终端窗口,在程序的初始化部分往串口数据寄存器SBUF里放一个字符来起用终端显示;

如:

SBUF=' ';

printf("Welcome to debug software!\n");

原因:由于不管是中断还是查询TI标志的方法,都会检测TI,因此首次发送必须置位TI标志,使串口开始发送“在程序的初始化部分往串口数据寄存器SBUF里放一个字符来起用终端显示;”方法最终作用也就是把TI置1,改成TI=1;来启动发送也是一样的

KEIL中的一些细节的更多相关文章

  1. KEIL中启动文件详解(汇编语言)

    原文在此:http://www.cnblogs.com/mddblog/p/4920063.html 概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要 ...

  2. keil中出现Undefined symbol FLASH_PrefetchBufferCmd (referred from main.o)等问题解决办法

    在keil中仿照别人的程序写了RCC初始化的程序,编译后出现以下问题 .\obj\pro1.axf: Error: L6218E: Undefined symbol FLASH_PrefetchBuf ...

  3. keil中的串口调试:

    keil中串口的虚拟调试信息在通过View-serial windows-#usart1/2/3/4/debug(printf)可以看到.当然也可以通过虚拟串口VSPD+串口调试助手在外部实现,方法如 ...

  4. Keil中的code关键字

    一般说来,我们在C语言中定义的每一个变量初始化后都会占用一定的内存(RAM)空间.但是在keil中提供了一个特殊的关键字“code”,这个关键字在标准C中是没有的.其语法举例如下: unsigned ...

  5. 关于keil中data,idata,xdata,pdata,code的问题

    转自关于keil中data,idata,xdata,pdata,code的问题 ‍从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类 ...

  6. 在KEIL中的模块化程序写法

    在使用KEIL的时候,我们习惯上在一个.c的文件中把自己要写的东西按照自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的.但是当程序很长的时候, ...

  7. 在keil中使用Astyle格式化你的代码的方法

    一个好的程序,不仅要有好的算法,同时也需要有良好的书写风格.写出好的算法不容易,但是好的代码风格却并不困难.提到格式化代码,Astyle是一个不能错过的工具,它可以方便的将程序代码格式化成自己想要的样 ...

  8. keil中for循环变量递减,无法跳出循环的问题

    定义j时应注意其变量类型char,此循环当j=0时,再执行一次则keil中j=0XFF,而不是-1,所以无法跳出循环.但在vc6.0中是可以跳出循环的. 解决办法如下:不能让j的值为负数 uchar ...

  9. keil中使用_at_绝对地址定位

    使用_at_关键字对存储器进行绝对地址定位程序如下: #include<reg51.h> ] _at_ 0x8000; main() { LED_Data[] = 0x23; } 在kei ...

随机推荐

  1. Android写入文件操作权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses- ...

  2. HAVING 子句 (SQL Server Compact)

    MSDN官方文献 原文地址:http://technet.microsoft.com/zh-cn/library/ms173260.aspx

  3. HDU_2019——向排序好的数列中插入数

    Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序.   Input 输入数据包含多 ...

  4. v4l2采集视频和图片源码

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h&g ...

  5. windows 自动安装

    msiexec

  6. php PDO操作乱码问题

    前阶段用php写了一个小网页(每周一练),然后就一直忙着其他事也没管它,今天想着给它写个添加数据的页面,用pdo操作,没想到插入数据库的中文数据竟然乱码了,竟然乱码了!然后我就方了,赶紧检测数据传输过 ...

  7. LeetCode - 204. Count Primes - 埃拉托斯特尼筛法 95.12% - (C++) - Sieve of Eratosthenes

    原题 原题链接 Description: Count the number of prime numbers less than a non-negative number, n. 计算小于非负数n的 ...

  8. RequireJS进阶(一)

    为了应对日益复杂,大规模的JavaScript开发.我们化整为零,化繁为简.将复杂的逻辑划分一个个小单元,各个击破.这时一个项目可能会有几十个甚至上百个JS文件,每个文件为一个模块单元.如果上线时都是 ...

  9. UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))

    Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit: 1 second Pebble ...

  10. cocos2d-x 3.0 画图节点——Node

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...