原创 (ZT)430资料※三

2008-5-18 14:03 2261 0 分类: MCU/ 嵌入式

六、端口设置<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1)、P1/P2 I/O Port1/2


#define P<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1IN        (0x0020)  P1 输入寄存器:存放输入数据


#define P1OUT     (0x0021)  P1 输出寄存器:存放输出数据     


#define P1DIR      (0x0022)  P1 方向寄存器:0:输入, 1:输出


#define P1IFG      (0x0023)  P1 中断标志寄存器:


#define P1IES      (0x0024)  P1 中断触发沿选择寄存器:0:上升沿中断。1:下降沿中断;


#define P1IE       (0x0025)  P1 中断允许寄存器:开放对应的中断 0:禁止, 1:开放


#define P1SEL    (0x0026)  P1 功能选择寄存器:0:端口功能,1:模块功能;


P2口的定义从 0X0028-----0X002E


      2P3P4P5P6


#define PXIN         输入寄存器:存放输入数据


#define PXOUT    输出寄存器:存放输出数据      


#define PXDIR      方向寄存器:0:输入, 1:输出


#define PXSEL      功能选择寄存器:0:端口功能,1:模块功能


七、基本定时器:BT


      BTCTL          控制寄存器           040H


       BTCNT1        计数器1               046H


       BTCNT2        计数器2               047H


  1)、控制寄存器 BTCTL   (0x0040)   



SSEL


HOLD


DIV


FRFQ1


FRFQ0


IP2


IP1


IP0


IP0IP1IP2:决定中断间隔时间,即BTIFG置位时间            


FRFQ0   :选择flcd频率,


FRFQ1   :选择flcd频率,


DIV     fCLK2 = ACLK:256  


HOLD    1:停止BTCNT1工作,HOLD+DIV:停止BTCNT2工作;


SSEL     DIV一起选择BTCNT2的输入频率;


BTCNT1    (0x0046)  /* Basic Timer Count 1计数器1*/


BTCNT2    (0x0047)  /* Basic Timer Count 2计数器2*/


对应的Byte位如下:



2 e7


2e6


2e5


2e4


2e3


2e2


2e1


2e0


2BT的设置(通过设置BTCTL的各位来设置)


BTCNT1对时钟ACLK分频;


BTCNT2:对时钟频率分频,输入时钟可以是ACLKMCLKACLK/256


1)、计数器2BTCNT2)的输入频率设置


#define BT_fCLK2_ACLK                      (0x00)          f=ACLK


#define BT_fCLK2_ACLK_DIV256              (BTDIV)        f=ACLK/256


#define BT_fCLK2_MCLK                     (BTSSEL)      f=MCLK


2)、中断间隔时间的设置


#define BT_fCLK2_DIV2       (0x00)                    /* fINT = fCLK2:2 (default) */


#define BT_fCLK2_DIV4       (BTIP0)                   /* fINT = fCLK2:4 */


#define BT_fCLK2_DIV8       (BTIP1)                   /* fINT = fCLK2:8 */


#define BT_fCLK2_DIV16      (BTIP1+BTIP0)             /* fINT = fCLK2:16 */


#define BT_fCLK2_DIV32      (BTIP2)                   /* fINT = fCLK2:32 */


#define BT_fCLK2_DIV64      (BTIP2+BTIP0)             /* fINT = fCLK2:64 */


#define BT_fCLK2_DIV128     (BTIP2+BTIP1)             /* fINT = fCLK2:128 */


#define BT_fCLK2_DIV256     (BTIP2+BTIP1+BTIP0)       /* fINT = fCLK2:256 */


3)当fBT=fACLK LCD的驱动频率设置


#define BT_fLCD_1K          (0x00)                    /* fACLK:32 (default) */


#define BT_fLCD_512         (BTFRFQ0)                 /* fACLK:64 */


#define BT_fLCD_256         (BTFRFQ1)                 /* fACLK:128 */


#define BT_fLCD_128         (BTFRFQ1+BTFRFQ0)         /* fACLK:256 */


4fBT=fMCLK LCD 的频率设置


#define BT_fLCD_31K         (BTSSEL)                  /* fMCLK:32 */


#define BT_fLCD_15_5K       (BTSSEL+BTFRFQ0)          /* fMCLK:64 */


#define BT_fLCD_7_8K        (BTSSEL+BTFRFQ1+BTFRFQ0)  /* fMCLK:256 */


5fBT=fACLK 中断时间设置


#define BT_ADLY_0_064       (0x00)                    /* 0.064ms interval (default) */


#define BT_ADLY_0_125       (BTIP0)                   /* 0.125ms    " */


#define BT_ADLY_0_25        (BTIP1)                   /* 0.25ms     " */


#define BT_ADLY_0_5         (BTIP1+BTIP0)             /* 0.5ms      " */


#define BT_ADLY_1           (BTIP2)                   /* 1ms        " */


#define BT_ADLY_2           (BTIP2+BTIP0)             /* 2ms        " */


#define BT_ADLY_4           (BTIP2+BTIP1)             /* 4ms        " */


#define BT_ADLY_8           (BTIP2+BTIP1+BTIP0)       /* 8ms        " */


#define BT_ADLY_16          (BTDIV)                   /* 16ms       " */


#define BT_ADLY_32          (BTDIV+BTIP0)             /* 32ms       " */


#define BT_ADLY_64          (BTDIV+BTIP1)             /* 64ms       " */


#define BT_ADLY_125         (BTDIV+BTIP1+BTIP0)       /* 125ms      " */


#define BT_ADLY_250         (BTDIV+BTIP2)             /* 250ms      " */


#define BT_ADLY_500         (BTDIV+BTIP2+BTIP0)       /* 500ms      " */


#define BT_ADLY_1000        (BTDIV+BTIP2+BTIP1)       /* 1000ms     " */


#define BT_ADLY_2000        (BTDIV+BTIP2+BTIP1+BTIP0) /* 2000ms     " */


6 fBT=fMCLK (1MHz) 中断时间设置


#define BT_MDLY_0_002       (BTSSEL)                  /* 0.002ms interval           


#define BT_MDLY_0_004       (BTSSEL+BTIP0)            /* 0.004ms    "           


#define BT_MDLY_0_008       (BTSSEL+BTIP1)            /* 0.008ms    "      


#define BT_MDLY_0_016       (BTSSEL+BTIP1+BTIP0)      /* 0.016ms    "        


#define BT_MDLY_0_032       (BTSSEL+BTIP2)            /* 0.032ms    " */


#define BT_MDLY_0_064       (BTSSEL+BTIP2+BTIP0)      /* 0.064ms    " */


#define BT_MDLY_0_125       (BTSSEL+BTIP2+BTIP1)      /* 0.125ms    " */


#define BT_MDLY_0_25        (BTSSEL+BTIP2+BTIP1+BTIP0)/* 0.25ms     " */


7BT时钟选择  /*Reset/Hold coded with Bits 6-7 in BT(1)CTL */


#define BTHOLD_CNT1      (BTHOLD)         停止BTCNT1工作,


#define BTHOLD_CNT1_2    (BTHOLD+BTDIV)  停止BTCNT2工作;       


8)对应的SFR中断位和标志


 #define BTIE                0x80 */


        #define BTIFG               0x80 */

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /2 下一条