Admin vip
Tổng số bài gửi : 366 vi phạm : 0 Join date : 15/04/2010 Age : 33 Đến từ : Bình Lục-Hà Nam
| Tiêu đề: code lap trinh pic Sat Nov 26, 2011 9:07 pm | |
| #include <16f877a.h> #include #fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, NOPUT, NODEBUG, NOBROWNOUT #use delay(clock=4000000) //#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9) //thiêt lâp cong COM //------Dinh nghia cac bien----------- #define Clk ra0 #define Data ra1 #define Rck ra2 #define Oe ra3 //----------------------------------------------------------------------- void dich_595(unsigned char num1, unsigned char num2); void Init_595(void); void Out_595(unsigned char num1,unsigned char num2); //------------------------------------------------------------------------- void main(void) { set_tris_a(0x00); output_a(0); Init_595(); while (True) { Out_595(0xD2,0x6E); //xuat du lieu de test delay_ms(5000); Out_595(0x00,0x00); delay_ms(5000); Out_595(0x2D,0xE6); delay_ms(5000);
} } void Init_595(void) { Clk=0; Clk=1; Data=0; Oe=1; } void Out_595(unsigned char num1,unsigned char num2) { char i; unsigned int data; data = ((unsigned int)num1<< | num2; //gop 2 byte num1 va num2 gan cho data (16bit) Oe = 1; //cam xuat du lieu ra khi chua chuyen doi xong for(i = 0;i<16;i++) { if(data & 0x8000)//truyen bit co trong so cao truoc Data = 1; else Data = 0; Clk = 1; //xung nhip Clk =0; data =data<<1; //dich tra 1 bit } Rck = 1; //chot du lieu Rck = 0; Oe = 0; //cho phep xuat du lieu ra }
Mot chuong trinh dung chuc nang PWM cua pic 16f877a
#include <16f877a.h> #include #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=20000000) #byte PR2=0x92 //Gia tri nap cho thanh ghi PR2 (quyet dinh chu ki xung) #byte CCPR1L=0x15 //Gia tri nap cho thanh ghi CCP1L (quyet dinh do rong xung) #byte CCPR1H=0x16 #byte mode=0x17 //Thanh ghi chon che do cho chuc nang CCP #byte T2CON=0x12 //Thanh ghi dieu khien bo chia sau #byte TMR2=0x11 //Gia tri dem cua timer2 #byte PIR1=0x0c #bit over=0x0c.1 //"over"=1 khi gia tri trong TMR2=PR2 bit nay nam trong PIR1 #bit on=0x12.2 //Bit dieu khien Timer hoat dong trong T2CON
int8 i; void setPWM() { T2CON=0x01; //Thiet lap bo chia tan 1:16 (prescaler) PIR1=0; TMR2=0; //Gia tri ban dau cho thanh ghi dem PR2=255; //Gia tri trong thanh ghi PR2 de timer2 so sanh mode=0b1100; //Thiet lap CCP1 lam viec o che do PWM************ CCPR1L=0x00; CCPR1H=0x00; on=1; } void main(void) { i=0; trisc=0x00; setPWM(); while(1) { CCPR1L=i; if(TMR2==255& over==1) { i=i+1; if(i==250) i=0; over=0; } } }
code: ;chuong trinh 1.1 ;portbtest.asm ;dieu khien led noi voi portb sang xen ke processor p16f877a ;khai bao vi dieu khien include ;header file __CONFIG _CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;cofiguration-------------------------------------------------------------------------------------- ;_cp_off_ :tat chuc nang bao ve chuong trinh (code protect) ;_wdt_off : tat watchdog timer ;_bode_off :khong cho phep power-out reset ;_pwrte_on : cho phep brown-up timer ;_xt_ost : dao dong thach anh ;_wrt_off : tat chuc nang chong ghi ;_lvp_off : tat che do nap dien ap thap ;_cpd_off : tat chuc nang bao ve ma eeprom (code protect data eeprom) ;---------------------------------------------------------------------------------------------------- org 0x000 GOTO start start BCF STATUS,RP0 BCF STATUS,RP1 ;chon bank0 CLRF PORTB BSF STATUS,RP0 ;chon bank1 CLRF TRISB ;thiet lap portb la output BCF STATUS,RP0 ; chon bank0 MOVLW 0xaa MOVWF PORTB loop GOTO loop END
|
|