三、应广单片机 I/O 设定

【IO的设定】

    在设定 T16M、ADCC、ADCM、INTEN、INTRQ 等缓存器时,有些人使用如下语法。


        $ ADCM  /16, 12BIT;         //  ADCM    =   100_0100_0b;
        $ ADCC  Enable, PB0;        //  ADCC    =   1_0_000_00b;
        $ T16M  EOSC, /1, BIT15;    //  T16M    =   0xA7;
    显然,就方便性和可读性来看,$ IO xx, xx 的语法似乎也是不错的选择。
你可从 Include files:xxx.INC 中,得到更多语法的了解,如下例。


    T16M        IO_RW       0x06
        $ 7 ~ 5 :   STOP, SYSCLK, X, X, IHRC, EOSC, ILRC, PA0
        $ 4 ~ 3 :   /1, /4, /16, /64
        $ 2 ~ 0 :   BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15
    ADCM        IO_RW       0x21
        $ 7 ~ 5 :   8BIT, 9BIT, 10BIT, 11BIT, 12BIT
        $ 3 ~ 1 :   /1, /2, /4, /8, /16, /32, /64, /128
    INTEN       IO_RW       0x04
        $ 3 :   X, AD
        $ 2 :   X, T16
        $ 1 :   X, PB0
        $ 0 :   X, PA0

    在 T16M 的定义中,可以知道 T16M 由 3 种字段组成,
而关键词 STOP、SYSCLK、IHRC、EOSC、ILRC、PA0 皆可用在 $ T16M 的语法中。
而 X 表示不存在的状态,如 $ 7 ~ 5  :  STOP, SYSCLK, X, X, IHRC, EOSC, ILRC, PA0,
相同的,/1, /4, /16, /64,BIT8 ~ BIT15 等关键词,也皆可用在 $ T16M 的语法中。

如果不想使用某种中断来源,只要不去宣告使用,????缺少的字段,组译器将以 0 取代该字段。

    在 INTEN 的定义中,有数种中断来源,如 AD、T16、PB0、PA0。
你可以将想设定为 1 的中断来源填入,没有填入的中断来源,组译器将以 0 取代该字段。
如下例:
        $ INTEN     PA0;        // INTEN = 0001B,只有 INTEN.PA0 = 1,其余为 0。
        $ INTEN     PB0, AD;    // INTEN = 1010B,只有 INTEN.PB0/AD = 1,其余为 0。
    当然,如果你只想改变 INTEN 中的某一项中断来源,也可以用如下语法:

        INTEN.PA0   =   1;      //  等同于  set1    INTEN.0
        INTRQ.T16   =   0;      //  等同于  set0    INTRQ.2
    在 $ IO  xx, yy 的语法中,如果少了某些字段,组译器将以默认值 (通常是 0)

设定该字段。如下例:


        $ T16M      SYSCLK, /16;    // 等同于 $ T16M    SYSCLK, /16, BIT8;
        $ T16M      STOP;           // T16M =   0; 或  $ T16M  STOP, /1, BIT8

    请不要自行更改 Include files:xxx.INC 的内容,否则,会造成组译的错误。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值