Paano ma-access ang bitfield ng MSP430 sa IAR C

C

chen_Analog

Guest
Paano ma-access ang bitfield ng MSP430 gamit IAR C. halimbawa, gusto kong mag-set o i-reset ng anumang indibidwal na kaunti mula sa c code.

 
Huwag na ito tumutukoy sa:

# define bit_test (A, B) (A & B)
# define bit_set (A, B) A | = B
# define bit_clear (A, B) A & = ~ B

At sa iyo ay makatarungan isingit ang processor header:

# isama ang "msp430x14x.h"Ngayon kung nais mong itakda ang bit 0 ng anumang REGISTER ng variable na simpleng gawin ito:

bit_set (ANY_REGISTER, BIT0);Para i-reset

bit_clear (ANY_REGISTER, BIT0);para sa test kung kaunti ay naka-set

kung (bit_test (ANY_REGISTER, BIT0))
(
)para sa test kung kaunti ay malinaw

kung (! bit_test (ANY_REGISTER, BIT0))
(
)Gawin ang parehong para sa
BIT1, BIT2, BIT3, BIT4, BIT5, BIT6, BIT7, BIT8, BIT9, BITA, BITB, BITC, BITD, kagat, BITF
Ang mga ito ay tinukoy sa processor na header tulad nito ....

# define BIT0 (0x0001)
# define BIT1 (0x0002)
# define BIT2 (0x0004)
# define BIT3 (0x0008)
# define BIT4 (0x0010)
# define BIT5 (0x0020)
# define BIT6 (0x0040)
# define BIT7 (0x0080)
# define BIT8 (0x0100)
# define BIT9 (0x0200)
# define BITA (0x0400)
# define BITB (0x0800)
# define BITC (0x1000)
# define BITD (0x2000)
# define Bite (0x4000)
# define BITF (0x8000)

leomecma

 
Alam kong ang pamamaraan na ito, ngunit tingin ko ito ay hindi pa rin ma-access ang bit ngunit buong magrehistro-access

Ang mga sumusunod ay mga halimbawa ng unti-access ng:
__no_init sumpungin unyon
(
hindi linagdaan char IE1
struct
(
hindi linagdaan char WDTIE: 1;
hindi linagdaan char OFIE: 1;
hindi linagdaan char: 2;
hindi linagdaan char NMIIE: 1;
hindi linagdaan char ACCVIE: 1;
hindi linagdaan char URXIE0: 1;
hindi linagdaan char UTXIE0: 1;
) IE1_bit;
@) 0x0000;

Ayon sa itaas kasama ang code sa ang user code na ito ay posible na ma-access alinman sa buong magparehistro o anumang indibidwal na mga bit (o birtfields) mula sa C code bilang mga sumusunod "

/ / magrehistro buong-access

IE1 = 0x1234;

/ / Bitfield-access

IE1.WDTIE = 1;

Subukan ko ito ngunit maaari hindi tagumpay.Hindi ko alam kung bakit?

 
chen_Analog,
Sa tingin ko na solusyon ay ang paggamit ng macros.

Sa aking proyects sa MSP430 ko bang gamitin ....

# define RTSon () P3OUT! = 0x04 / / pagiging bit4 ng P3 = 1
# define RTSoff () P3OUT & = ~ 0x04 / / deing bit4 ng P3 = 0

tapos

pangunahing ()
(
...
...
/ / ngayon Gusto ko ng RTS = 1
RTSon ();
....
.....
/ / ngayon RTS = 0
RTSoff ();
....
....)

Halimbawang ito maaari kang mag-aplay sa iyong trabaho
ibig sabihin,

Malugod na pagbati
FSio

 

Welcome to EDABoard.com

Sponsor

Back
Top