1. I/O Æ÷Æ® Á¦¾îÇϱâ
¡Ø I/O port control
º» °Á´ PIC16c74·Î ¼³¸íÇϸç, CCS-C»çÀÇ
C ÄÄÆÄÀÏ·¯¸¦ Áß½ÉÀ¸·Î ÇÏ°Ú´Ù. ±×·¯´Ù º¸¸é ¼¼ºÎÀûÀÎ °ÍÀº ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼ ÇØÁÖ±â
¶§¹®¿¡ ³»¿ëÀÌ ºüÁú °æ¿ìµµ ÀÖ´Ù. ±×·¯³ª CCS-C ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇϴµ¥´Â ÀüÇô ¹®Á¦°¡
µÇÁö ¾ÊÀ» °Å¶ó »ý°¢ÇÑ´Ù. ¶ÇÇÑ º» °Á´ PIC16c74¸¦ Àß ´Ù·é´Ù¸é ³ª¸ÓÁö DEVICE´Â
±×¸® ¾î·ÆÁö ¾Ê°Ô »ç¿ëÇÒ ¼ö ÀÖÀ» °Å¶ó º»ÀÎÀº »ý°¢Çϱ⠶§¹®¿¡ PIC16C74·Î ¼³¸íÀ»
ÇÏ°Ú´Ù.
º»·ÐÀ¸·Î µé¾î°¡¼ I/O port¸¦ Á¦¾îÇϱâ À§Çؼ´Â File AddressÁß 06h
ȤÀº 86h¸¦ ÄÁÆ®·ÑÇÔÀ¸·Î½á PICÀÇ I/OÆ÷Æ®¿¡ logic 0[ 0V ] ȤÀº logic 1[ 5V ]À»
ÁÙ ¼ö ÀÖ´Ù.
(1) PORTB¸¦ ÀÔÃâ·ÂÀ¸·Î »ç¿ëÇϱâ
1) PORTB¸¦ ¸ðµÎ ÀÔ·ÂÀ¸·Î »ç¿ëÇϱâ
PORTB¸¦ ¸ðµÎ ÀÔ·ÂÀ¸·Î »ç¿ëÇϱâ À§Çؼ´Â TRISB¿¡
0xFF·Î ¼³Á¤ÇÏ¸é µÈ´Ù.
¨ç ¹æ¹ý
TRISB REGISTER
À§¿Í
°°ÀÌ TRISB REGISTER¿¡ °ªÀ» ¾²¸é PORTB ¸ðµÎ¸¦ ÀÔ·ÂÀ¸·Î »ç¿ëÀÌ °¡´ÉÇϹǷÎ
¿ÜºÎ ÀåÄ¡ÀÇ °ªÀ» ÀÐ¾î ¿À´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
2) PORTB¸¦ ¸ðµÎ Ãâ·ÂÀ¸·Î »ç¿ëÇϱâ
PORTB¸¦ ¸ðµÎ Ãâ·ÂÀ¸·Î »ç¿ëÇϱâ À§Çؼ´Â TRISB¸¦
0x00À¸·Î ¼³Á¤ÇÏ¸é µÈ´Ù.
¨ç ¹æ¹ý
TRISB REGISTER
À§¿Í
°°ÀÌ TRISB REGISTER¿¡ °ªÀ» ¾²¸é PORTB ¸ðµÎ¸¦ Ãâ·ÂÀ¸·Î »ç¿ëÀÌ °¡´ÉÇϹǷÎ
¿ÜºÎ ÀåÄ¡ Á¦¾î°¡ °¡´ÉÇÏ´Ù.
3) PORTB¸¦ ÀԷ°ú Ãâ·ÂÀ¸·Î È¥¿ëÇÏ¿© »ç¿ëÇϱâ
TRISB REGISTER
À§¿Í °°ÀÌ TRISB REGISTER¸¦ ¼³Á¤Çϸé PORTBÀÇ
ù ¹ø° Áï, RB0´Â Ãâ·ÂÀ¸·Î ¼³Á¤µÇ°í, RB1Àº Ãâ·ÂÀ¸·Î, RB2´Â ÀÔ·ÂÀ¸·Î,
RB3´Â Ãâ·ÂÀ¸·Î, RB4´Â Ãâ·ÂÀ¸·Î, RB5´Â ÀÔ·ÂÀ¸·Î, RB6Àº Ãâ·ÂÀ¸·Î, RB7Àº
ÀÔ·ÂÀ¸·Î ¼³Á¤ÀÌ µÈ´Ù. ÇÁ·Î±×·¥ÀûÀ¸·Î´Â [ ¿¹Á¦ 3 ]¿Í °°ÀÌ ÇÏ¸é µÈ´Ù.
[
¿¹Á¦ 3 ]
...... SET_TRIS_B( 0xA4 );
......
|
* SET_TRIS_B(),
OUTPUT_HIGH( PIN_B0 ), OUTPUT_LOW( PIN_B1 )ÇÔ¼ö³ª
¾ÕÀ¸·Î ³ª¿À°Ô µÉ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº °Ô½ÃÆÇ¿¡ °ø°³ÇÑ ¸Å´º¾ó Áß Built-In
Functions Command Summary ºÎºÐ¿¡ ÀÚ¼¼È÷ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. Âü°íÇϽñ⠹ٶø´Ï´Ù.
À§ÀÇ ³»¿ëÀ» Åä´ë·Î
Çؼ 8°³ÀÇ LED¸¦ ¼øÂ÷ÀûÀ¸·Î ¹Ýº¹Çؼ ÄÑ´Â ½ÇÇèÀÌ´Ù. ȸ·Îµµ¿Í ¼Ò½º°¡ ÀÖÀ¸´Ï ½±°Ô
ÀÌÇØÇϸ®¶ó »ý°¢ÇÕ´Ï´Ù.
½ÇÇè¿¡ ÀÌ¿ëµÉ ȸ·Îµµ´Â
´ÙÀ½°ú °°½À´Ï´Ù. RC0¿¡ RESET¸¦ ¸¸µé¾ú´Âµ¥ ¼Ò½º¿¡´Â RESET ±â´ÉÀÌ ¾ø½À´Ï´Ù. ÀÌ»óÇÏ°Ô
»ý°¢ÇÏÁö ¸¶¼¼¿©~
±×¸®°í
¾Æ·¡ÀÇ ¼Ò½º´Â ¾Æ·¡¿Í °°´Ù.
[¹æ¹ý
1]
#include "16C74B.h"
#use delay(clock=4000000)
void main(void)
{
SET_TRIS_B(
0x00 ); // =
SET_TRIS_B( all_out );
while(1) {
OUTPUT_HIGH(
PIN_B0 ); // B0Æ÷Æ®¿¡ HIGHÃâ·Â ³»º¸³»±â
DELAY_MS(1000);
//
0~65535±îÁö ÆĶó¸ÞŸ·Î »ç¿ë °¡´É, Áï 65.535 ÃʱîÁö °¡´É
OUTPUT_LOW(
PIN_B0 ); // B1Æ÷Æ®¿¡ LOWÃâ·Â ³»º¸³»±â
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B1 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B1 );
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B2 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B2 );
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B3 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B3 );
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B4 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B4 );
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B5 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B5 );
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B6 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B6 );
DELAY_MS(1000);
OUTPUT_HIGH(
PIN_B7 );
DELAY_MS(1000);
OUTPUT_LOW(
PIN_B7 );
DELAY_MS(1000);
}
} |
À§ÀÇ ¼Ò½º´Â ¹«ÇÑ·çÇÁ Áï, while()À»
µ¹¸é¼ LED¸¦ 1ÃÊ °£°ÝÀ¸·Î Ä×´Ù ²°´Ù ÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. Âü°í·Î CCS C»çÀÇ ÄÄÆÄÀÏ·¯´Â
´ë¼Ò¹®ÀÚ ±¸ºÐÀÌ ¾ø½À´Ï´Ù. ¶ÇÇϳª À§¿Í °°ÀÌ ÇÏ¸é ºÒÆíÀ» ´À³¢´Â »ç¶÷ÀÌ ÀÖ½À´Ï´Ù.
º¸ÅëÀÇ »ç¶÷µéÀÌ ¾î¼Àºí¸®¿¡ Àͼ÷ÇØÁ® Àֱ⠶§¹®¿¡ Çì´õÆÄÀÏÀ» ¼öÁ¤Çؼ ¿ì¸®°¡ Á»´õ
Àͼ÷ÇÑ ¹æ½ÄÀ¸·Î ÄÚµùÀÌ °¡´ÉÇÕ´Ï´Ù. Çì´õÆÄÀÏÀº °Ô½ÃÆÇ¿¡ ¿Ã·Á ³õ°Ú½À´Ï´Ù. ÀÚ,
±×·³ ¼Ò½º·Ñ º¼±î¿ä!
[¹æ¹ý
2]
#include
"H_16C74B.h"
#use
delay(clock=4000000)
void
main(void) {
trisb
= 0x00;
while(1)
{ rb0
= 0; delay_ms(1000);
rb0
= 1; delay_ms(1000);
rb1
= 0; delay_ms(1000);
rb1
= 1; delay_ms(1000);
rb2
= 0; delay_ms(1000);
rb2
= 1; delay_ms(1000);
rb3
= 0; delay_ms(1000);
rb3
= 1; delay_ms(1000);
rb4
= 0; delay_ms(1000);
rb4
= 1; delay_ms(1000);
rb5
= 0; delay_ms(1000);
rb5
= 1; delay_ms(1000);
rb6
= 0; delay_ms(1000);
rb6
= 1; delay_ms(1000);
rb7
= 0; delay_ms(1000);
rb7
= 1; delay_ms(1000); }
} |
¼Ò½º¸¦ º¸¸é "rb0=0"
¶ó°í µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ·± ¹æ½ÄÀÌ °¡´ÉÇÑ°Ô Á¦°¡ Çì´õÆÄÀÏ Áï, 16C74B.hÀÇ ³»¿ëÀ»
¹Ù²ã¼ "H_16C74B.h" ÆÄÀÏ·Î ¸¸µé¾ú½À´Ï´Ù. ±Ã±ÝÇϽŠºÐµéÀº µÎ Çì´õ ÆÄÀÏÀ»
ºñ±³Çؼ º¸½Ã¸é ÀÌÇØ°¡ °¡½Ã¸®¶ó »ý°¢ÇÕ´Ï´Ù. ÀÌ·± ³»¿ë±îÁö ÇÏ¸é ³»¿ëÀÌ ³Ê¹« ¹æ´ëÇÏ°Ô
µË´Ï´Ù. °¢ÀÚ ¼÷Á¦·Î ³²±â°í¿ä, ±Ã±ÝÇÑ »çÇ×ÀÌ ÀÖÀ¸½Ã¸é °Ô½ÃÆÇÀ» ÀÌ¿ëÇØ Áú¹®ÇØ
ÁֽʽÿÀ.
|