티스토리 뷰

SND 에 숫자 표시하기 어드레스와 데이터 표시

SND 에 어드레스와 데이터를 표시하는 프로그램을 작성해 보겠습니다. 어드레스와 주소는 16 진수로 표시되므로 SND 에 표시하는 숫자값을 16 진수로 확장하고, 출력할 포인터와 포인터가 가리키는 데이터를 배열에(snd_data[6]) 입력해서 SND 에 출력하는 함수를(snd_set()) 실행하는 방식으로 작성하겠습니다. #include char snd_num[16]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x27, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; char snd_loc[6]={0x04,0x08,0x10,0x20,0x40,0x80}; char snd_data[6]={0,0,0,0,0,0}; void delay(char dly) { char i; do { for(i=0; i<100; i++); } while(dly--); } void htosnd(char hh) { char temp; temp=hh; temp &= 0xf0; temp >>= 4; snd_data[4] = temp; temp=hh; temp &= 0x0f; snd_data[5] = temp; } void htosnd2(int hh) { int temp; temp=hh; temp &= 0xf000; temp >>= 12; snd_data[0] = temp; temp=hh; temp &= 0x0f00; temp >>= 8; snd_data[1] = temp; temp=hh; temp &= 0x00f0; temp >>= 4; snd_data[2] = temp; temp=hh; temp &= 0x000f; snd_data[3] = temp; } void snd_set(void) { char cnt,loc,num; for (cnt=0; cnt<20; cnt++) for (loc=0; loc<6; loc++) { num = snd_data[loc]; P2 = snd_num[num]; P3 = ~snd_loc[loc]; delay(10); } } void main(void) { char cnt,i; char code *r0; while(1) { r0 = 0x0000; for(cnt=0;cnt<16;cnt++) { htosnd2(r0); htosnd(*r0++); for(i=1;i<10;i++) { snd_set(); } } } } snd_num[16] 은 16 진수에 대한 SND 출력값입니다. snd_data[6] 배열은 전역변수로 선언해서 모든 함수가 사용할 수 있도록 하였습니다. htosan 와 htosnd2 함수는 byte 나 word 의 내용을 snd_data[] 배열에 입력해 주는 함수입니다. 위 프로그램을 실행하면 SND 왼쪽 4 자리는 0000 번지부터 000F 번지까지를, 오른쪽 2 자리는 각각의 번지의 내용을 순차적으로 증가시키면서 보여줍니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함