首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]:如何在codewarrior中定义端口?

[求助]:如何在codewarrior中定义端口?

在使用MICROCHIP的8位MCU的时候,可以做如下定义:
#define   cool   PORTC,1(表示定义PORTC口的第1脚定义为cool输出)

这样的好处是便于移植,且看源程序的时候一目了然,但在codewarrior中如何定义?


未能查到相关使用介绍,特向freescale的各位技术支持工程师求助。
最近比较喜欢开——MOTO
怎么把我的头像弄成了女性头标?呵呵,这论坛还搞变性啊?


等Freescale的FAE解答问题。等的太久了,我可就只能换回MICROCHIP的MCU了哦,时间不等人啊……
最近比较喜欢开——MOTO
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
是的,在相应型号的芯片的.h文件里都定义好了,可以打开来看看。
以下定义的全文:(我用的是汇编哦,用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
最近比较喜欢开——MOTO
对ddrc寄存器进行操作不可以吗?就像其他类型单片机一样
DDRC寄存器只是操作端口方向,和我的目的不符合。

在MICROCHIP中做这样的定义:
#DEFINE    COOL   PORTC,1
COOL_ON    MACRO
                    BSF       COOL
                    ENDM
COOL_OFF   MACRO
                    BCF       COOL
                    ENDM
这样定义的好处还是很不错的啊,在源程序中可以一目了然的看清开了哪个输出!
最近比较喜欢开——MOTO
看了一下你的宏定义,在Codewarrior中同样可以做类似的定义 #define COOL_ON asm bset COOL, PORTC 还可以这样来做 #define mSetBit(b1,var) (var |= (1<[此贴子已经被作者于2005-4-5 11:28:48编辑过]

依然编译通不过,用的是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的话,还望能留个电话联系。或者直接做一个示例定义(当然要求能汇编时编译通过,我按照楼上朋友的说法定义,却不能编译通过)
最近比较喜欢开——MOTO
我说的define的用法是在C语言里面,你s在汇编里面直接用bset操作就可以了,何必多此一举定义宏呢?
你把你程序编译通不过的错误讲出来,一起来研究。把你的需要和程序实现的功能最好能说明白一些。必要的话可以把程序发给我,我帮你调试看看
已搞定……

谢各位,呵呵,有空了,我也来一个MOTO的MCU使用“经验谈”。
最近比较喜欢开——MOTO
返回列表