[求助]:如何在codewarrior中定义端口?
- UID
- 108266
- 性别
- 男
|
[求助]:如何在codewarrior中定义端口?
在使用MICROCHIP的8位MCU的时候,可以做如下定义:
#define cool PORTC,1(表示定义PORTC口的第1脚定义为cool输出)
这样的好处是便于移植,且看源程序的时候一目了然,但在codewarrior中如何定义?
未能查到相关使用介绍,特向freescale的各位技术支持工程师求助。 |
|
|
|
|
|
- UID
- 108266
- 性别
- 男
|
怎么把我的头像弄成了女性头标?呵呵,这论坛还搞变性啊?
等Freescale的FAE解答问题。等的太久了,我可就只能换回MICROCHIP的MCU了哦,时间不等人啊…… |
|
|
|
|
|
- UID
- 107265
- 性别
- 男
|
codewarrior里面都给你定义好了的,方便得很哦
C:\Program Files\Metrowerks\CW08 V3.1\lib\hc08c\include里面直接找你要用到芯片型号:比如MC68HC908GZ32.H
/*** PTC - Port C Data Register; 0x00000002 ***/
typedef union {
byte Byte;
struct {
byte PTC0 :1; /* Port C Data Bit 0 */
byte PTC1 :1; /* Port C Data Bit 1 */
byte PTC2 :1; /* Port C Data Bit 2 */
byte PTC3 :1; /* Port C Data Bit 3 */
byte PTC4 :1; /* Port C Data Bit 4 */
byte PTC5 :1; /* Port C Data Bit 5 */
byte PTC6 :1; /* Port C Data Bit 6 */
byte :1;
} Bits;
struct {
byte grpPTC :7;
byte :1;
} MergedBits;
} PTCSTR;
extern volatile PTCSTR _PTC @0x00000002;
#define PTC _PTC.Byte
#define PTC_PTC0 _PTC.Bits.PTC0
#define PTC_PTC1 _PTC.Bits.PTC1
#define PTC_PTC2 _PTC.Bits.PTC2
#define PTC_PTC3 _PTC.Bits.PTC3
#define PTC_PTC4 _PTC.Bits.PTC4
#define PTC_PTC5 _PTC.Bits.PTC5
#define PTC_PTC6 _PTC.Bits.PTC6
#define PTC_PTC _PTC.MergedBits.grpPTC |
|
|
|
|
|
- UID
- 83540
- 性别
- 男
|
是的,在相应型号的芯片的.h文件里都定义好了,可以打开来看看。 |
|
|
|
|
|
- UID
- 108266
- 性别
- 男
|
以下定义的全文:(我用的是汇编哦,用C可以直接调用,用汇编可不能的哦)
; 68HC908QY4 Equates
RAMStart EQU $0080 ; absolute address to place variables
RAMEnd EQU $00FF ; last address of RAM, used to init stack pointer
ROMStart EQU $EE00 ; absolute address to place code/constant data
KEYF EQU 3 ; Bit 3 of KBSCR
ACKK EQU 2 ; Bit 2 of KBSCR
IMASKK EQU 1 ; Bit 1 of KBSCR
UConfig1: equ $FDEA ;near high addr end of unprotected FLASH
PORTA EQU $0000
PORTB EQU $0001
DDRA EQU $0004
DDRB EQU $0005
PTAPUE EQU $000B
PTBPUE EQU $000C
KBSCR EQU $001A
KBIER EQU $001B
INTSCR EQU $001D
CONFIG2 EQU $001E
CONFIG1 EQU $001F
TSC EQU $0020
TCNTH EQU $0021
TCNTL EQU $0022
TMODH EQU $0023
TMODL EQU $0024
TSC0 EQU $0025
TCH0H EQU $0026
TCH0L EQU $0027
TSC1 EQU $0028
TCH1H EQU $0029
TCH1L EQU $002A
OSCSTAT EQU $0036
OSCTRIM EQU $0038
ADSCR EQU $003C
ADR EQU $003E
ADICLK EQU $003F
BSR EQU $FE00
SRSR EQU $FE01
BRKAR EQU $FE02
BFCR EQU $FE03
INT1 EQU $FE04
INT2 EQU $FE05
INT3 EQU $FE06
FLCR EQU $FE08
BRKH EQU $FE09
BRKL EQU $FE0A
BRKSCR EQU $FE0B
LVISR EQU $FE0c
FLBPR EQU $FFBE
IOSCTRM EQU $FFC0
COPCTL EQU $FFFF |
|
|
|
|
|
- UID
- 105696
- 性别
- 男
|
对ddrc寄存器进行操作不可以吗?就像其他类型单片机一样 |
|
|
|
|
|
- UID
- 108266
- 性别
- 男
|
DDRC寄存器只是操作端口方向,和我的目的不符合。
在MICROCHIP中做这样的定义:
#DEFINE COOL PORTC,1
COOL_ON MACRO
BSF COOL
ENDM
COOL_OFF MACRO
BCF COOL
ENDM
这样定义的好处还是很不错的啊,在源程序中可以一目了然的看清开了哪个输出! |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
看了一下你的宏定义,在Codewarrior中同样可以做类似的定义
#define COOL_ON asm bset COOL, PORTC
还可以这样来做
#define mSetBit(b1,var) (var |= (1<[此贴子已经被作者于2005-4-5 11:28:48编辑过] |
|
|
|
|
|
- UID
- 108266
- 性别
- 男
|
依然编译通不过,用的是QY4(因为以前没用过MOTO,正好公司有一个很简单的CASE,因为用到了8位A/D,且I/O要求不多,而且我们已经准备将MICROCHIP换成MOTO的或者H8的MCU,H8的资料更少,所以就基本决定采用MOTO的MCU替代现有的MICROCHIP,呵呵,结果遇到现在的这个麻烦)
xdef Entry, main
include 'qy4_registers.inc'
cool EQU 0
#define cool_on asm BSET cool,PORTB
MyCode: section
main: cli
ldx #$80
main1: clr ,x
incx
bne main1
main_loop: sta $FFFF
nop
bra main_loop
Entry:
rti
采用什么样的办法,我到不在乎,主要的是要能达到想要的效果,各家的MCU我也用了有6/7种了把,但MOTO确实和别的MCU很不相同,我看了一下,MOTO和ST的东西很类似,其余好象都与它不太相同的把。
时间比较紧,这里如果有Freescale的FAE的话,还望能留个电话联系。或者直接做一个示例定义(当然要求能汇编时编译通过,我按照楼上朋友的说法定义,却不能编译通过) |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
我说的define的用法是在C语言里面,你s在汇编里面直接用bset操作就可以了,何必多此一举定义宏呢?
你把你程序编译通不过的错误讲出来,一起来研究。把你的需要和程序实现的功能最好能说明白一些。必要的话可以把程序发给我,我帮你调试看看 |
|
|
|
|
|
- UID
- 108266
- 性别
- 男
|
已搞定……
谢各位,呵呵,有空了,我也来一个MOTO的MCU使用“经验谈”。 |
|
|
|
|
|