Ccs c for pic16F877a mục lục I. Tổng quan về ccs vì sao ta sử dung ccs ?



tải về 1.15 Mb.
trang15/15
Chuyển đổi dữ liệu23.08.2016
Kích1.15 Mb.
#26977
1   ...   7   8   9   10   11   12   13   14   15

12.2.7. StdAfx.H

// stdafx.h : include file for standard system include files,

// or project specific include files that are used frequently, but

// are changed infrequently

//

#if !defined(AFX_STDAFX_H__A63EF4CE_6555_4F4F_B8F9_88951D96BF49__INCLUDED_)



#define AFX_STDAFX_H__A63EF4CE_6555_4F4F_B8F9_88951D96BF49__INCLUDED_
#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include // MFC core and standard components

#include // MFC extensions

#include // MFC Automation classes

#include // MFC support for Internet Explorer 4 Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include // MFC support for Windows Common Controls

#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.


#endif // !defined(AFX_STDAFX_H__A63EF4CE_6555_4F4F_B8F9_88951D96BF49__INCLUDED_)

12.2.8. mscomm.H

#if !defined(AFX_MSCOMM_H__E6B47B70_15D5_4522_B55C_51522629ECEA__INCLUDED_)

#define AFX_MSCOMM_H__E6B47B70_15D5_4522_B55C_51522629ECEA__INCLUDED_
#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++


// NOTE: Do not modify the contents of this file. If this class is regenerated by

// Microsoft Visual C++, your modifications will be overwritten.

/////////////////////////////////////////////////////////////////////////////

// CMSComm wrapper class


class CMSComm : public CWnd

{

protected:



DECLARE_DYNCREATE(CMSComm)

public:


CLSID const& GetClsid()

{

static CLSID const clsid



= { 0x648a5600, 0x2c6e, 0x101b, { 0x82, 0xb6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14 } };

return clsid;

}

virtual BOOL Create(LPCTSTR lpszClassName,



LPCTSTR lpszWindowName, DWORD dwStyle,

const RECT& rect,

CWnd* pParentWnd, UINT nID,

CCreateContext* pContext = NULL)

{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,

const RECT& rect, CWnd* pParentWnd, UINT nID,

CFile* pPersist = NULL, BOOL bStorage = FALSE,

BSTR bstrLicKey = NULL)

{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,

pPersist, bStorage, bstrLicKey); }

// Attributes

public:
// Operations

public:

void SetCDHolding(BOOL bNewValue);



BOOL GetCDHolding();

void SetCommID(long nNewValue);

long GetCommID();

void SetCommPort(short nNewValue);

short GetCommPort();

void SetCTSHolding(BOOL bNewValue);

BOOL GetCTSHolding();

void SetDSRHolding(BOOL bNewValue);

BOOL GetDSRHolding();

void SetDTREnable(BOOL bNewValue);

BOOL GetDTREnable();

void SetHandshaking(long nNewValue);

long GetHandshaking();

void SetInBufferSize(short nNewValue);

short GetInBufferSize();

void SetInBufferCount(short nNewValue);

short GetInBufferCount();

void SetBreak(BOOL bNewValue);

BOOL GetBreak();

void SetInputLen(short nNewValue);

short GetInputLen();

void SetNullDiscard(BOOL bNewValue);

BOOL GetNullDiscard();

void SetOutBufferSize(short nNewValue);

short GetOutBufferSize();

void SetOutBufferCount(short nNewValue);

short GetOutBufferCount();

void SetParityReplace(LPCTSTR lpszNewValue);

CString GetParityReplace();

void SetPortOpen(BOOL bNewValue);

BOOL GetPortOpen();

void SetRThreshold(short nNewValue);

short GetRThreshold();

void SetRTSEnable(BOOL bNewValue);

BOOL GetRTSEnable();

void SetSettings(LPCTSTR lpszNewValue);

CString GetSettings();

void SetSThreshold(short nNewValue);

short GetSThreshold();

void SetOutput(const VARIANT& newValue);

VARIANT GetOutput();

void SetInput(const VARIANT& newValue);

VARIANT GetInput();

void SetCommEvent(short nNewValue);

short GetCommEvent();

void SetEOFEnable(BOOL bNewValue);

BOOL GetEOFEnable();

void SetInputMode(long nNewValue);

long GetInputMode();

};

//{{AFX_INSERT_LOCATION}}



// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MSCOMM_H__E6B47B70_15D5_4522_B55C_51522629ECEA__INCLUDED_)

12.2.9. mscomm.CPP

// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++

// NOTE: Do not modify the contents of this file. If this class is regenerated by

// Microsoft Visual C++, your modifications will be overwritten.


#include "stdafx.h"

#include "mscomm.h"

/////////////////////////////////////////////////////////////////////////////

// CMSComm

IMPLEMENT_DYNCREATE(CMSComm, CWnd)

/////////////////////////////////////////////////////////////////////////////

// CMSComm properties

/////////////////////////////////////////////////////////////////////////////

// CMSComm operations

void CMSComm::SetCDHolding(BOOL bNewValue)

{

static BYTE parms[] =



VTS_BOOL;

InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetCDHolding()



{

BOOL result;

InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetCommID(long nNewValue)



{

static BYTE parms[] =

VTS_I4;

InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

long CMSComm::GetCommID()



{

long result;

InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);

return result;

}

void CMSComm::SetCommPort(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetCommPort()



{

short result;

InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetCTSHolding(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetCTSHolding()



{

BOOL result;

InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetDSRHolding(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x7, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetDSRHolding()



{

BOOL result;

InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetDTREnable(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetDTREnable()



{

BOOL result;

InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetHandshaking(long nNewValue)



{

static BYTE parms[] =

VTS_I4;

InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

long CMSComm::GetHandshaking()



{

long result;

InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);

return result;

}

void CMSComm::SetInBufferSize(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetInBufferSize()



{

short result;

InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetInBufferCount(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetInBufferCount()



{

short result;

InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetBreak(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetBreak()



{

BOOL result;

InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetInputLen(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetInputLen()



{

short result;

InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetNullDiscard(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x10, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetNullDiscard()



{

BOOL result;

InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetOutBufferSize(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0x11, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetOutBufferSize()



{

short result;

InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetOutBufferCount(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0x12, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetOutBufferCount()



{

short result;

InvokeHelper(0x12, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetParityReplace(LPCTSTR lpszNewValue)



{

static BYTE parms[] =

VTS_BSTR;

InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

lpszNewValue);

}

CString CMSComm::GetParityReplace()



{

CString result;

InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);

return result;

}

void CMSComm::SetPortOpen(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x14, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetPortOpen()



{

BOOL result;

InvokeHelper(0x14, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetRThreshold(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0x15, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetRThreshold()



{

short result;

InvokeHelper(0x15, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetRTSEnable(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x16, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetRTSEnable()



{

BOOL result;

InvokeHelper(0x16, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetSettings(LPCTSTR lpszNewValue)



{

static BYTE parms[] =

VTS_BSTR;

InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

lpszNewValue);

}

CString CMSComm::GetSettings()



{

CString result;

InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);

return result;

}

void CMSComm::SetSThreshold(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0x18, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetSThreshold()



{

short result;

InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetOutput(const VARIANT& newValue)



{

static BYTE parms[] =

VTS_VARIANT;

InvokeHelper(0x19, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

&newValue);

}

VARIANT CMSComm::GetOutput()



{

VARIANT result;

InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);

return result;

}

void CMSComm::SetInput(const VARIANT& newValue)



{

static BYTE parms[] =

VTS_VARIANT;

InvokeHelper(0x1a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

&newValue);

}

VARIANT CMSComm::GetInput()



{

VARIANT result;

InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);

return result;

}

void CMSComm::SetCommEvent(short nNewValue)



{

static BYTE parms[] =

VTS_I2;

InvokeHelper(0x1b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

short CMSComm::GetCommEvent()



{

short result;

InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);

return result;

}

void CMSComm::SetEOFEnable(BOOL bNewValue)



{

static BYTE parms[] =

VTS_BOOL;

InvokeHelper(0x1c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,

bNewValue);

}

BOOL CMSComm::GetEOFEnable()



{

BOOL result;

InvokeHelper(0x1c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);

return result;

}

void CMSComm::SetInputMode(long nNewValue)



{

static BYTE parms[] =

VTS_I4;

InvokeHelper(0x1d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,



nNewValue);

}

long CMSComm::GetInputMode()



{

long result;

InvokeHelper(0x1d, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);

return result;

}

12.2.10. Giao tiep pc va pic6f877 qua cong rs232

chào các bạn mình đang viết chương trình giao tiếp giữa pic6f877 và pc


chương trình trên pic viết bằng ccsc lệnh :

#include <16F877.h>


#fuses HS,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=1000000)
#use rs232(baud=4800, xmit=PIN_C6, rcv=PIN_C7, PARITY=N,BITS =7,STOP=2)
#include
#include
void main()
{
//int status;
char value;
lcd_init();
lcd_putc("begin");

value=getc();


putc(value);}

trên pc dùng chương trình giao tiếp viết bằng matlab( trong diễn đàn)


nhưng sao mình kô thấy nó nhận dc gì cả
có ai làm cái này rồi thì có thể giúp mình dc kô

Ban tham khao nhe

#include <16F876A.h>


#device adc=8
#use delay(clock=20000000)
#fuses NOWDT,HS
#use rs232(baud=2400,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)

char c;


#INT_RDA
Receive_isr()
{
c=getc(); // nhan ky tu.
}
void main(void)
{
set_tris_b(0x00);
output_b(0x00);

enable_interrupts(INT_RDA);


enable_interrupts (GLOBAL);

while(1)
{


output_b(c);
}
}


13. Ghi đọc RAM ngoài

13.1. Sơ đồ



13.2. Code

///////////////////////////////////////////////////////////////////////////

//Chuong trinh ghi va doc RAM ngoai

//Su dung PIC16F877, chot bang 74HCS573, RAM 62256 32Kx8

//

//Cong viec can thuc hien:



//Ghi du lieu vào RAM sau moi lan bam nut,

//sau 10 lan ghi, sang LED va doc lan luot 10 gia tri do.

//

///////////////////////////////////////////////////////////////////////////



#include <16F877.h>

#device *=16

#device adc=8
#FUSES NOWDT //No Watch Dog Timer

#FUSES RC //Resistor/Capacitor Osc with CLKOUT

#FUSES NOPROTECT //Code not protected from reading

#FUSES BROWNOUT //Reset when brownout detected

#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)

#FUSES NOWRT //Program memory not write protected

#FUSES NODEBUG //No Debug mode for ICD
#use delay(clock=20000000)

//khai bao bien

int8 adc;

int ghi; //ghi=1:dang ghi du lieu vao RAM

int16 diachi;
#int_ext

void ngat_RB0()

{

int16 diachi; //bien dem so lan ghi vao RAM



if( diachi < 10 ) {

adc=read_adc(); //doc gia tri ADC

output_high( PIN_D7 ); //khoa RAM

//thiet lap dia chi cho RAM:

output_high( PIN_B1 ); //LE=1, cho phep xac lap 8bit thap dia chi RAM

output_c( diachi ); //xac lap 8bit thap dia chi RAM

output_low( PIN_B1 ); //LE=0, chot 8bit thap dia chi RAM

output_d( diachi>>8 ); //xac lap 8bit cao dia chi RAM,

//dong thoi mo RAM (RD7=0)

//ghi gia tri vao RAM:

output_low( PIN_B2 ); //chuyen sang che do ghi, WEbu=0

output_c( adc ); //ghi gia tri vao RAM

output_high( PIN_D7 ); //khoa RAM

diachi++;

}

if( diachi == 10 ) {



output_high( PIN_A5 ); //sang LED

diachi = 0;

ghi = 0; //da ghi xong, cho phep xu li tiep

}

}



// Chuong trinh chinh

main()


{

setup_adc_ports( AN0_AN1_VSS_VREF ); //A0,A1 la ADC, VRef+ la A3

setup_adc( ADC_CLOCK_INTERNAL );

set_adc_channel(0); //chon AN0


enable_interrupts( global );

enable_interrupts( int_ext ); //chon ngat ngoai

ext_int_edge( L_TO_H ); //ngat dua vao canh len
while(true) {

ghi = 1; //dang ghi du lieu vao RAM

if( ghi == 0 ) { //du lieu da ghi xong

output_high( PIN_B2 ); //khong cho phep che do ghi

output_low( PIN_B3 ); //chuyen sang che do doc, OEbu=0

for( diachi=0;diachi<=10;diachi++ ) {

//thiet lap dia chi cho RAM:

output_high( PIN_B1 ); //LE=1, cho phep xac lap 8bit thap dia chi RAM

output_c( diachi ); //xac lap 8bit thap dia chi RAM

output_low( PIN_B1 ); //LE=0, chot 8bit thap dia chi RAM

output_d( diachi>>8 ); //xac lap 8bit cao dia chi RAM,

//dong thoi mo RAM (RD7=0)

//doc gia tri tu RAM:

input_c(); //doc gia tri tu RAM

delay_ms(700);

output_high( PIN_D7 ); //khoa RAM

}

}

}



}

Project 1: Kết nối PIC 16F877A với EEPROM 25AA640.

Sorry mọi người là tối hôm nay em tìm mỏi cả mắt mà không thấy bất cử một thằng EEPROM nào có chuẩn giao tiếp SPI, cho nên ở Project này em chỉ xin được làm chay thôi, ai có điều kiện mạch thật hoặc có trình giả lập tốt thì xin test + đưa ra ý kiến cho em phát.


SPI là một chuẩn dữ liệu giao tiếp đơn giản nhất có tốc độ lớn nhất, tuy nhiên có độ an toàn không cao khi mà dây clock bị ảnh hưởng => dẫn đến ảnh hưởng đến toàn hệ thống.
Với PIC16F877A thì có 3 chân cho chế độ SPI đó là: RC3( clock ), RC4 ( SDI ), RC5 ( SD0) , còn chân select chíp thì lấy bất cứ một chân I/O thông thường.
Cơ chế SPI là quá trình dịch bít qua lại giữa Slave và Master qua 2 đường đây SDI, SDO. Ứng với mỗi IC khác nhau lại cho một chuẩn truyền tiếp riêng để điều khiển quá trình truyền. Với EEPROM 25AA640 cơ chế đó là:
Đọc byte:
Truyền lệnh 0000011 tiếp đến là truyền địa chỉ 16 byte, và đọc dữ liệu . Khi chân CS lên 1 => cũng là lúc báo hiệu kết thúc đường truyền.



Write byte
Viết lệnh command: 00000010, sau đó truyền địa chỉ 16 bit, rồi bắt đầu truyền dữ liệu. Quá trình truyền kết thức khi CS = 1



PHP Code:

void main()


{
// init ban dau
   OUTPUT_LOW(PIN_C2);       
   setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_4);
   OUTPUT_HIGH(PIN_C2); 
   delay(5);      
// truyen du lieu co gia tri 0x55 xuong eeprom tai dia chi 0x0004    
   OUTPUT_LOW(PIN_C2);      
   spi_write(0x02);        // command = 0x02 -> ghi du lieu
   spi_write(0x00);
   spi_write(0x04);
   wpi_write(0x55);
   OUTPUT_HIGH(PIN_C2); 
   delay(5);    
// Doc du leu
   OUTPUT_LOW(PIN_C2);      
   spi_write(0x03);       // command -= 0x03 -> doc du lieu
   spi_write(0x00);
   spi_write(0x04);
   wpi_read(buff);
   OUTPUT_HIGH(PORTD); 
   delay(5);   
   
   while(1);
}

cho em hỏi về vòng lặp while

các bác có thể cho mình biết cách sử dụng vòng lặp while dc ko?


chương trình mình viết như sau nhưng vòng lặp while ko thực hiện đc

Code:


int8 a,b;

main()


{

while(a==8){

a++;

portb=00;



delay_ms(100);

portb=0xFF;

delay_ms(100);

}

TL: Bên ngoài vòng while nên khởi tạo giá trị cho biến a. Điều kiện lặp là a==8 do đó nếu giá trị a ban đầu không phải là 8 thì vòng lặp không chạy. Nếu vòng lặp có chạy thì chỉ chạy 1 lần, vì bên trong vòng lặp a bị thay đổi.

Code của bạn chỉ cần sửa lại thành

Code:


int8 a,b;

main()


{

a = 0;


while(a<8){

a++;


portb=00;

delay_ms(100);

portb=0xFF;

delay_ms(100);



}


 


Thang8831

http://www.picvietnam.com

- -


tải về 1.15 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   7   8   9   10   11   12   13   14   15




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương