分享一个从keil转iar的51头文件
keil 51中的sfr转到iar比较容易,把=号替换成@即可,sbit需要手动改改,附件是我改好的STC15F2K60S2、STC89C5xRC的头文件#ifndef __IAR__HEADER__H
#define __IAR__HEADER__H
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
typedef unsigned long long uint64_t;
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed long int32_t;
typedef signed long long int64_t;
#include <limits.h>
#include <intrinsics.h>
#include <stdbool.h>
#define __IO volatile
#define SFR_T __sfr __no_init __IO
#define sfr SFR_T unsigned char
#define bit __no_init bool __bit
#define xdata __xdata
#define data __data
#define idata __idata
#define pdata __pdata
#define bdata __bdata
#define ixdata __ixdata
#define code __code
#define CONST const code
#define _push_(X) { char __tmp; __tmp=X;
#define _pop_(X) X =__tmp; }
#define _nop_() __no_operation()
#define CBYTE ((uint8_t __IO code*) 0)
#define DBYTE ((uint8_t __IO data*) 0)
#define PBYTE ((uint8_t __IO pdata *) 0)
#define XBYTE ((uint8_t __IO xdata *) 0)
#define CWORD ((uint16_t __IO code*) 0)
#define DWORD ((uint16_t __IO data*) 0)
#define PWORD ((uint16_t __IO pdata *) 0)
#define XWORD ((uint16_t __IO xdata *) 0)
#define sfr_t(NAME, ADDR) \
SFR_T union{ \
unsigned char NAME; \
struct{ \
unsigned char bit0 : 1; \
unsigned char bit1 : 1; \
unsigned char bit2 : 1; \
unsigned char bit3 : 1; \
unsigned char bit4 : 1; \
unsigned char bit5 : 1; \
unsigned char bit6 : 1; \
unsigned char bit7 : 1; \
} NAME##_bit; \
} @ ADDR
#define sbit(VAR, NUM) VAR##_bit.bit##NUM
#endif //__IAR__HEADER__H
#ifndef STC15F2K60S2_H
#define STC15F2K60S2_H
#include "iar_header.h"
//内核特殊功能寄存器 // 复位值 描述
sfr ACC @ 0xE0; //0000,0000 累加器Accumulator
sfr B @ 0xF0; //0000,0000 B寄存器
sfr_t(PSW, 0xD0); //0000,0000 程序状态字
#define CY sbit(PSW, 7)
#define AC sbit(PSW, 6)
#define F0 sbit(PSW, 5)
#define RS1 sbit(PSW, 4)
#define RS0 sbit(PSW, 3)
#define OV sbit(PSW, 2)
#define P sbit(PSW, 0)
sfr SP @ 0x81; //0000,0111 堆栈指针
sfr DPL @ 0x82; //0000,0000 数据指针低字节
sfr DPH @ 0x83; //0000,0000 数据指针高字节
//I/O 口特殊功能寄存器
sfr_t(P0, 0x80); //1111,1111 端口0
#define P00 sbit(P0, 0)
#define P01 sbit(P0, 1)
#define P02 sbit(P0, 2)
#define P03 sbit(P0, 3)
#define P04 sbit(P0, 4)
#define P05 sbit(P0, 5)
#define P06 sbit(P0, 6)
#define P07 sbit(P0, 7)
……………………………………………… 顶楼主。不过坛子里还是用KEILC51的多。 嗯,51还是用keil的多 标记一下,2020快到了 不知哪个出的码效率更高 谢谢楼主分享 谢谢楼主分享 下来试试,谢谢!
页:
[1]