Em nhờ các bác xem giúp em lại đoạn code. vì mô phỏng proteus thì chữ nó không hiện lên rõ ràng và chạy khá chậm. em cảm ơn
Proteus e, xài bản 8.0 nên các bác chịu khó đọc giúp em ạ.
Proteus e, xài bản 8.0 nên các bác chịu khó đọc giúp em ạ.
Code:
#include "16f877a.h" #device PIC16F877A*=16 ADC=10 #use delay(clock=20000000) #fuses NOWDT,HS,PUT,NOPROTECT #byte Port_B = 0x06 // Dinh nghia thanh ghi Port B #byte Port_C = 0x07 // Dinh nghia thanh ghi Port C #byte TRIS_B = 0x86 // Dinh nghia thanh ghi Tris B #byte TRIS_C = 0x87 // Dinh nghia thanh ghi Tris B #bit data = Port_C.0 // #bit clock = Port_C.1 // #bit latch = Port_C.2 // #bit clock2 = Port_C.3 // #bit data2 = Port_C.4 // #bit latch2 = Port_C.5 // //#bit SDI2=portd.0 char const hang[8]={254,253,251,247,239,223,191,127}; // Dich tu trai sang phai. //char const hang[8]={1,2,4,8,32,64,128}; // Dich tu trai sang phai. char const buffer_mh[8][64]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0 255 8 14 12 255 0 127 128 128 128 127 24 44 70 131 }; //char const mang[8]={4,12,28,60,124,252,0,0}; int a=64; #int_timer2 void timer2() { INT i,y; int b=8; for(i=0;i<8;i++) { for(y=0;y<8*b;y++) { data=bit_test(buffer_mh[0][a+y],i); //SDI2=bit_test(buffer_mh[0][a+y],i); CLOCK=1; CLOCK=0; } for(y=0;y<8;y++) { data2=bit_test(~hang[i],y); clock2=1; clock2=0; } latch2=1; latch2=0; LATCH=1; LATCH=0; } } void main() { enable_interrupts(global); enable_interrupts(int_timer2); setup_timer_2(t2_div_by_4,255,1); set_timer2(0); set_tris_c(0); set_tris_d(0); output_c(0); //portd=0; while(true) { a--; delay_ms(10); if(a==64+16) a=0; } }
Comment