|
MC68HC908JL8
匠人应用手记 07.中断定义有两种方法:
方法一:
#pragma TRAP_PROC
void IntFunc1(void)
{
/* your code */
}
In your prm file:
VECTOR ADDRESS 0xFFF4 IntFunc1 /* 0xFFF4 contains the address of IntFunc1 */
方法二:
interrupt 3 IntFunc1()
{
…/*code*/
}
Means that the third entry in the vector table is initialized with the address of IntFunc1().
08.IO口在使用之前必须先初始化,否则会报错
09.相关网址
ehua 发表于 2005-7-3 09:27 侃单片机 ←返回版面
到这里看看吧: http://www.edatech.com/bbs/index.asp
下面是关于这个软件的一些常见问题:
http://www.edatech.com/bbs/dispbbs.asp?BoardID=3&replyID=284&id=284&star=1&skin=0
10.数据类型
类型 缺省格式 缺省范围 可选格式
char(unsigned) 8bit 0~255 8bit,16bit,32bit
signed char 8bit -128~127 8bit,16bit,32bit
unsigned char 8bit 0~255 8bit,16bit,32bit
signed short 16bit -32768~32767 8bit,16bit,32bit
unsigned short 16bit 0~65535 8bit,16bit,32bit
enum(signed) 16bit -32768~32767 8bit,16bit,32bit
signed int 16bit -32768~32767 8bit,16bit,32bit
unsigned int 16bit 0~65535 8bit,16bit,32bit
signed long 32bit -2147483648~2147483647 8bit,16bit,32bit
unsigned long 32bit 0~4294967295 8bit,16bit,32bit
signed long long 32bit -2147483648~2147483647 8bit,16bit,32bit
unsigned long long 32bit 0~4294967295 8bit,16bit,32bit
1. 定义寄存器
C51 : volatile unsigned char Bank1R0 _at_ 0x0008;
CW08 : volatile unsigned char PTA @0x0000;
11.位的定义与使用
定义方法: (以PTB口的操作为例子)
/*** PTB - Port B Data Register; 0x00000001 ***/
typedef union {
byte Byte;
struct {
byte PTB0 :1; /* Port B Data Bit 0 */
byte PTB1 :1; /* Port B Data Bit 1 */
byte PTB2 :1; /* Port B Data Bit 2 */
byte PTB3 :1; /* Port B Data Bit 3 */
byte PTB4 :1; /* Port B Data Bit 4 */
byte PTB5 :1; /* Port B Data Bit 5 */
byte PTB6 :1; /* Port B Data Bit 6 */
byte PTB7 :1; /* Port B Data Bit 7 */
} Bits;
struct {
byte grpPTB :8;
} MergedBits;
} PTBSTR;
extern volatile PTBSTR _PTB @0x00000001;
#define PTB _PTB.Byte
#define PTB_PTB0 _PTB.Bits.PTB0
#define PTB_PTB1 _PTB.Bits.PTB1
#define PTB_PTB2 _PTB.Bits.PTB2
#define PTB_PTB3 _PTB.Bits.PTB3
#define PTB_PTB4 _PTB.Bits.PTB4
#define PTB_PTB5 _PTB.Bits.PTB5
#define PTB_PTB6 _PTB.Bits.PTB6
#define PTB_PTB7 _PTB.Bits.PTB7
#define PTB_PTB _PTB.MergedBits.grpPTB
#define PTB_PTB0_MASK 1
#define PTB_PTB0_BITNUM 0
#define PTB_PTB1_MASK 2
#define PTB_PTB1_BITNUM 1
#define PTB_PTB2_MASK 4
#define PTB_PTB2_BITNUM 2
#define PTB_PTB3_MASK 8
#define PTB_PTB3_BITNUM 3
#define PTB_PTB4_MASK 16
#define PTB_PTB4_BITNUM 4
#define PTB_PTB5_MASK 32
#define PTB_PTB5_BITNUM 5
#define PTB_PTB6_MASK 64
#define PTB_PTB6_BITNUM 6
#define PTB_PTB7_MASK 128
#define PTB_PTB7_BITNUM 7
#define PTB_PTB_MASK 255
#define PTB_PTB_BITNUM 0
使用方法:(以PTB2口的操作为例子)
PTB_PTB2 = 0;
PTB_PTB2 = 1;
PTB_PTB2 = ~ PTB_PTB2 ; //位取反
位定义
C51:例子 sbit RD = P3^7; sbit WR = P3^6; sbit T1 = P3^5; sbit T0 = P3^4; sbit INT1 = P3^3; sbit INT0 = P3^2; sbit TXD = P3^1; sbit RXD = P3^0;
CW08:例子 typedef union { struct { unsigned char D0:1; unsigned char D1:1; unsigned char D2:1; unsigned char D3:1; unsigned char D4:1; unsigned char D5:1; unsigned char D6:1; unsigned char D7:1; }Bit; unsigned char _BYTE; }BitType;//数据结构定义 #pragma DATA_SEG SHORT _DATA_ZEROPAGE BitType PORTC; #define PTC PORTC._BYTE //8位 #define RD PORTC.Bit.D0 #define WR PORTC.Bit.D1 #define T1 PORTC.Bit.D2 #define T0 PORTC.Bit.D3 #define INT1 PORTC.Bit.D4 #define INT0 PORTC.Bit.D5 #define TXD PORTC.Bit.D6 #define RXD PORTC.Bit.D7
12.数据结构
零页(0x00-0xff)内均可位寻址和直接读写操作,直接寻址.
但零页数据定义要有:
#pragma DATA_SEG SHORT 加上你的prm文件当中零页的数据位置
如_DATA_ZEROPAGE之类(SHORT表示零页)
零页的数据可以实现MOVE data1,data2之类的短指令
ROM的数据(例如字符表,码表)要有
#pragma DATA_SEG FAR DEFAULT_ROM //(FAR 表示放在ROM当中)
DEFAULT_RAM的空间是放堆栈和其他普通全局变量, 堆栈是由ram的底部开始(由大变小); 变量是由顶部开始(由小变大);所以如果有太多的堆栈数据会覆盖普通全局变量.
13.工程文件系统介绍
首先看codewarrior自动生成的工程文件系统:
1、sources文件夹里包含一个main.c的主文件。
用户的主程序将要放在这个文件中。另外用户自己编写的
一些文件(存放用户自己定义的函数)也要放在这个文件夹中
2、startup Code文件里包括一个Start08.c的文件。
该文件中包含一个_Startup()的函数,MCU复位后,将会首先执行_Startup()。该函数初始化堆栈,拷贝初始数据到RAM中,并调用main()主函数。一般用户不必修改该文件
3、prm文件夹 后缀为prm的文件中可以根据硬件决定ROM,RAM的分配。用户可以自己修改;后缀为map的文件中可以看到在文件,函数,变量在存储区中的分配
4、Libs文件夹
头文件中定义了IO控制、状态、数据寄存器的地址。在用户自己的程序中可以直接使用这些宏定义
相关连接:ICS08 FREESCALE(Motolora)单片机仿真编程器
|