vâng
đây là code của em
#include <16F886.h>
#device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES PROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOIESO //No Internal External Switch Over mode enabled
#FUSES NOFCMEN //No Fail-safe clock monitor enabled
#FUSES NOLVP //No Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NODEBUG //No Debug mode for ICD
#FUSES WRT //Program memory write protected
#FUSES BORV40 //Brownout reset at 4v
#use delay(clock=4000000)
#byte PORTB = 0x06
#byte TRISB = 0x86
//===============================
//define com
//mant
//===============================
//#define data PIN_B5
//#define
//#define SHIFT_CLK_1 PORTB |= 0b00010000
//#define SHIFT_CLK_0 PORTB &= ~0b00010000
#define SHIFT_DTA_1 PORTB |= 0b00100000
#define SHIFT_DTA_0 PORTB &= ~0b00100000
#define MASK_LED_0 0b00101000
#define MASK_LED_1 0b10101111
#define MASK_LED_2 0b10011000
#define MASK_LED_3 0b10001010
#define MASK_LED_4 0b00001111
#define MASK_LED_5 0b01001010
#define MASK_LED_6 0b01001000
#define MASK_LED_7 0b10101110
#define MASK_LED_8 0b00001000
#define MASK_LED_9 0b00001010
//int16 n;
const unsigned char dta[10] =
{MASK_LED_0,MASK_LED_1,MASK_LED_2,MASK_LED_3,MASK_ LED_4,
MASK_LED_5,MASK_LED_6,MASK_LED_7,MASK_LED_8,MASK_L ED_9};
//===============================
//dinh nghia cac ham
//===============================
void sckc();
void lat();
void dichbit();
//===============================
//tao xung clock
//===============================
void sckc()
{ //PORTB=0b11110111
output_high(PIN_B4);
delay_us(200);
output_low(PIN_B4);
delay_us(200);
}
//===============================
//tao xung latch va hien thi
//===============================
void lat()
{ //PORTB=0b11101111
output_high(PIN_B3);
delay_us(200);
output_low(PIN_B3);
delay_us(200);
}
//===============================
//DICH BIT
//n la so phan tu mang
//i so lan lap dich bit
//===============================
void main()
{
unsigned char mask,i,n;
int8 dk;
mask = 0x80;
for(n=0;n<10;n++)
{ for(i=0;i<8;i++)
{ if( dta[n] & mask ) {SHIFT_DTA_1;}
else {SHIFT_DTA_0;}
sckc();
mask>>=1;
}
dk=0b00001111;
if(dk & mask) {SHIFT_DTA_1;}
else {SHIFT_DTA_0;}
sckc();
mask>>=1;
lat();
delay_ms(2000);
}
}
|