用一款51内核的单片机,单片机带usb sie等。。很多资源!
但是有些控制寄存器地址都是固定的, 好比:usb tx0 fifo=0x50 0x51.。。
c语言怎么从固定地址里面取数据啊,呵呵。。。c不熟,别见笑!
回复:汇编写多了,c语言不知咋写了?请看:
在程序开始的时候会有一个头文件
在这个文件里就会把整个单片机上的特殊寄存器进行宏定义,然后你按宏定义进行操作就行了。
回复:汇编写多了,c语言不知咋写了?请看:
汇编写多了吗?
SFR不知道吗?
回复:汇编写多了,c语言不知咋写了?请看:
hehe,c语言寄存器不是编译器自己分配的吗?
如果我没用到的特殊寄存器,c语言会自动避开吗?
呵呵,假设,,,一个寄存器作用是uart buffer
头文件有定义假设在 0x80吧,我没用到,
c语言就不会再定义的头文件范围进行分配地址吧。。
呵呵,估计是这样。。
回复:汇编写多了,c语言不知咋写了?请看:
很多人都问过了,帖子也很多,我就再打一遍吧
#define REG (*(int *)0x0000)
REG = xxx;
xxx = REG;
就可以用了
回复:汇编写多了,c语言不知咋写了?请看:
我是奇怪c语言自动分配寄存器地址为什么
我是奇怪c语言不是自动分配寄存器地址吗?
为什么能避开我没没用到的特殊寄存器呢?
这些东西在哪里有讲呢?
回复:汇编写多了,c语言不知咋写了?请看:
不是c自动分配,是编译器分配,但每种编译器的做法是不一样的
回复:汇编写多了,c语言不知咋写了?请看:
如果是单片机内部
特殊寄存器,用 sfr beep=P3^3 之类定义
如果是Ram 最好不要指定,否则程序容易崩溃
如果是外部 RAM 用
#define XBYTE ((unsigned char volatile xdata *) 0)
#define R8155 0x5f00
#define ReadIO(addr) XBYTE[R8155 + (addr)]
#define WriteIO(addr,value) XBYTE[R8155 + addr] = value
来访问
回复:汇编写多了,c语言不知咋写了?请看:
额。。。楼上的那个。。sfr beep=P3^3。。。错了吧
应该是sbit beep=p3^3。。。小错误。。。。
回复:汇编写多了,c语言不知咋写了?请看:
额。。。 sorry~ sorry~~
回复:汇编写多了,c语言不知咋写了?请看:
可以自己定义数组 进行数据的采集和分析就可以了
南京璞晓电子 www.cpx0.com需要
msn:njlianjian@hotmail.com
回复:汇编写多了,c语言不知咋写了?请看:
太高深了