



















Preview text:
  lOMoAR cPSD| 58583460 Bài 1:  #include  void delay(int time)  {   while (time--)   ; } int i; void  main() {   while (1)   {   P2 = 0x00;   for (i = 0; i < 8; i++)   {   P2 = (P2 << 1)|0x01;   delay(30000);   }   for (i = 0; i < 8; i++)   {   P2 = P2 << 1;   delay(30000);   } }  }  Bài 2:      lOMoAR cPSD| 58583460 #include sbit dendo1  = P1^0; sbit denvang1 = P1^1;  sbit denxanh1 = P1^2; sbit 
dendo2 = P1^3; sbit denvang2 =  P1^4; sbit denxanh2 = P1^5;  #define led1 P2 #define led2 
P3 sbit DV = P0^0; sbit Chuc =  P0^1; sbit chinhtay = P1^6;  sbit tudong = P1^7; 
unsigned char code Code7seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,  0xF8, 0x80, 0x90}; int  dem; int tanso;  void delay(int time)  {   while (time--);   }  void chedotudong(void){     dendo1 = 1;   dendo2 = 0;   denvang1 = 0;   denvang2 = 0;   denxanh1 = 0;   denxanh2 = 1; 
 for (dem = 10; dem >= 3; dem--)   { 
 for (tanso = 0; tanso < 15; tanso++)   {   int dem2 = dem - 3;   int chuc = dem2 / 10;   int dvi = dem2 % 10;   DV = 1;   P3 = Code7seg[dem % 10];   P2 = Code7seg[dvi];   delay(4000);   DV = 0;        lOMoAR cPSD| 58583460  Chuc = 1;   P3 = Code7seg[dem / 10];   P2 = Code7seg[chuc];   delay(4000);   Chuc = 0;   }   }   denvang1 = 0;   denvang2 = 1;   denxanh1 = 0;   denxanh2 = 0; 
 for (dem = 2; dem >= 0; dem--)   { 
 for (tanso = 0; tanso < 15; tanso++)   {   DV = 1;   P3 = Code7seg[dem % 10];   P2 = Code7seg[dem % 10];   delay(4000);   DV = 0;   Chuc = 1;   P3 = Code7seg[dem / 10];   P2 = Code7seg[dem / 10];   delay(4000);   Chuc = 0;   }   }   dendo1 = 0;   dendo2 = 1;   denvang1 = 0;   denvang2 = 0;   denxanh1 = 1;   denxanh2 = 0; 
 for (dem = 10; dem >= 3; dem--)   { 
 for (tanso = 0; tanso < 15; tanso++)   {   int dem2 = dem - 3;   int chuc = dem2 / 10;   int dvi = dem2 % 10;   DV = 1;   P2 = Code7seg[dem % 10];   P3 = Code7seg[dvi];      lOMoAR cPSD| 58583460  delay(4000);      lOMoAR cPSD| 58583460       lOMoAR cPSD| 58583460  DV = 0;   Chuc = 1;   P2 = Code7seg[dem / 10];   P3 = Code7seg[chuc];   delay(4000);   Chuc = 0;   }   }   denvang1 = 1;   denvang2 = 0;   denxanh1 = 0;   denxanh2 = 0; 
 for (dem = 2; dem >= 0; dem--)   { 
 for (tanso = 0; tanso < 15; tanso++)   {   DV = 1;   P2 = Code7seg[dem % 10];   P3 = Code7seg[dem % 10];   delay(4000);   DV = 0;   Chuc = 1;   P2 = Code7seg[dem / 10];   P3 = Code7seg[dem / 10];   delay(4000);   Chuc = 0;   } } }  void main(){ if (tudong ==  0){   if(chinhtay == 1){   dendo1 = 1;   dendo2 = 0;   denvang1 = 0;   denvang2 = 0;   denxanh1 = 0;   denxanh2 = 1;     }   if(chinhtay == 0){   dendo1 = 0;      lOMoAR cPSD| 58583460    dendo2 = 1;   denvang1 = 0;   denvang2 = 0;   denxanh1 = 1;   denxanh2 = 0;   }   }     else if(tudong == 1){   chedotudong();   }  }          lOMoAR cPSD| 58583460
Bài 3: lịch vạn niên mô phỏng  #ifndef __DELAY_H__  #define __DELAY_H__   
void delay_us(unsigned int us_count); void delay_ms(unsigned int ms_count); void 
delay_sec(unsigned char sec_count);    #endif  #include  #include "delay.h"   
void delay_us(unsigned int us_count) {   while(us_count!=0)   {   us_count--;   }  } 
// the #ifndef prevents the file from being included more than once  #ifndef __DS1307_H__  #define __DS1307_H__    void ds1307_Init(); 
void ds1307_Write(unsigned char dat); 
void ds1307_SetTime(unsigned char hh, unsigned char mm, unsigned char ss); void ds1307_SetDate(unsigned 
char dd, unsigned char mm, unsigned char yy); void ds1307_GetTime(unsigned char *h_ptr,unsigned char  *m_ptr,unsigned char  *s_ptr); 
void ds1307_GetDate(unsigned char *d_ptr,unsigned char *m_ptr,unsigned char  *y_ptr);  #endif  #include  #include "ds1307.h"  #include "i2c.h"  #include "delay.h"              lOMoAR cPSD| 58583460
/* Below given values are fixed and should not be changed. 
 Refer Ds1307 DataSheet for more info*/ 
#define DS1307_ID 0xD0 // ds1307 ID   
#define SEC_ADDRESS 0x00 // address to access ds1307 SEC register 
#define DATE_ADDRESS 0x04 // address to access ds1307 DATE register 
#define control 0x07 // address to access ds1307 CONTROL register              //ds1307 initilization void  ds1307_Init()  { 
 i2c_Start(); // Start i2c communication     ds1307_Write(DS1307_ID);   ds1307_Write(control);     ds1307_Write(0x00);     i2c_Stop();     } 
void ds1307_Write(unsigned char dat) {   i2c_Write(dat);   i2c_Clock();   }  unsigned char ds1307_Read() {   unsigned char dat;   dat = i2c_Read();   return(dat);   } 
void ds1307_SetTime(unsigned char hh, unsigned char mm, unsigned char ss) {      lOMoAR cPSD| 58583460       lOMoAR cPSD| 58583460
 i2c_Start(); // Start i2c communication     ds1307_Write(DS1307_ID);   ds1307_Write(SEC_ADDRESS);   ds1307_Write(ss);   ds1307_Write(mm);   ds1307_Write(hh);   
 i2c_Stop(); // Stop i2c communication after Setting the Time  } 
void ds1307_SetTimeAuto(void) { 
 i2c_Start(); // Start i2c communication   
 ds1307_Write(DS1307_ID); ds1307_Write(SEC_ADDRESS);   
 i2c_Stop(); // Stop i2c communication after Setting the Time  } 
void ds1307_SetDate(unsigned char dd, unsigned char mm, unsigned char yy) { 
 i2c_Start(); // Start i2c communication     ds1307_Write(DS1307_ID);   ds1307_Write(DATE_ADDRESS);     ds1307_Write(dd);   ds1307_Write(mm);   ds1307_Write(yy);   
 i2c_Stop(); // Stop i2c communication after Setting the Date  } 
void ds1307_SetDateAuto(void) { 
 i2c_Start(); // Start i2c communication     ds1307_Write(DS1307_ID);   ds1307_Write(DATE_ADDRESS); 
 i2c_Stop(); // Stop i2c communication after Setting the Date }      lOMoAR cPSD| 58583460       lOMoAR cPSD| 58583460
void ds1307_GetTime(unsigned char *h_ptr,unsigned char *m_ptr,unsigned char  *s_ptr)  { 
 i2c_Start(); // Start i2c communication     ds1307_Write(DS1307_ID);   ds1307_Write(SEC_ADDRESS);     i2c_Stop();     i2c_Start();   ds1307_Write(0xD1);     
 *s_ptr = ds1307_Read(); i2c_Ack(); 
 *m_ptr = ds1307_Read(); i2c_Ack(); *h_ptr = ds1307_Read();  i2c_NoAck();   
 i2c_Stop(); // stop i2c communication after reading the Time   } 
void ds1307_GetDate(unsigned char *d_ptr,unsigned char *m_ptr,unsigned char  *y_ptr)  { 
 i2c_Start(); // start i2c communication     ds1307_Write(DS1307_ID);   ds1307_Write(DATE_ADDRESS);     i2c_Stop();       i2c_Start();   ds1307_Write(0xD1);     
 *d_ptr = ds1307_Read(); i2c_Ack(); 
 *m_ptr = ds1307_Read(); i2c_Ack(); *y_ptr = ds1307_Read();  i2c_NoAck();   
 i2c_Stop(); // stop i2c communication after reading the Time } 
// the #ifndef prevents the file from being included more than once #ifndef __I2C_H__      lOMoAR cPSD| 58583460     lOMoAR cPSD| 58583460 #define __I2C_H__ void  i2c_Clock(void); 
void i2c_Start(); void i2c_Stop(void); void i2c_Write(unsigned char 
); unsigned char i2c_Read(void); void i2c_Ack(); void i2c_NoAck();  #endif  #include  #include "delay.h"  #include "i2c.h"   
sbit SCL=P2^0; //SCL Connected to P2.0 sbit SDA=P2^1; //SDA  Connected to P2.1    void i2c_Clock(void)  {   delay_us(50);   SCL = 1;     delay_us(50);   SCL = 0;  }    void i2c_Start() {   SCL = 0; // pull SCL low     SDA = 1; // pull SDA High   delay_us(50);     SCL = 1; //pull SCL high   delay_us(50);   
 SDA = 0; //Now pull SDA LOW, to generate the Start Condition   delay_us(50);   
 SCL = 0; //Finally Clear the SCL to complete the cycle  }   void i2c_Stop(void)      lOMoAR cPSD| 58583460 {   SCL = 0; // pull SCL low   delay_us(50);     SDA = 0; // pull SDA low   delay_us(50);     SCL = 1; // pull SCL High   delay_us(50);   
 SDA = 1; // Now pull SDA High, to generate the Stop Condition  } 
void i2c_Write(unsigned char dat) {   unsigned char i;     for(i=0;i<8;i++) { 
 SDA = dat & 0x80; i2c_Clock();  dat = dat<<1;   }   SDA = 1;  } 
unsigned char i2c_Read(void) {   unsigned char i, dat=0x00;     SDA=1;   for(i=0;i<8;i++)   {   delay_us(50);   SCL = 1;   delay_us(50);   
 dat = dat<<1; dat = dat | SDA;     SCL = 0; }      lOMoAR cPSD| 58583460  return dat;  }  void i2c_Ack() {   SDA = 0; i2c_Clock();  SDA = 1;  }  void i2c_NoAck() {   SDA = 1; i2c_Clock();  SCL = 1;  } 
// the #ifndef prevents the file from being included more than once  #ifndef __LCD_H__  #define __LCD_H__    void lcd_Init(); 
void lcd_WriteCmd( char cmd); void  lcd_Writedata( char a); 
void lcd_DisplayString(char *string_ptr); void 
lcd_DisplayNumber(unsigned int num); void 
lcd_ScrollMessage(char *msg_ptr); 
void lcd_DisplayRtcTime(char hour,char min,char sec); void 
lcd_DisplayRtcDate(char day,char month,char year); void lcd_Clear(); void 
lcd_GoToLineOne(); void lcd_GoToLineTwo(); 
void lcd_GoToXY(char row, char col);    #endif  #include  #include "lcd.h"  #include "delay.h"   
#define dataport P1 // LCD dataport connected to PORT1      lOMoAR cPSD| 58583460
sbit rs= dataport^0; // Register select pin connected to P1.0 
sbit rw= dataport^1; // Read Write pin connected to P1.1 sbit en= dataport^2; // Enable  pin connected to P1.2        /* 16x2 lcd Specification */  #define LCDMaxLines 2  #define LCDMaxChars 16  #define LineOne 0x80  #define LineTwo 0xc0      #define BlankSpace ' '                //LCD initilization void  LCD_Init() {   delay_us(5000); 
 lcd_WriteCmd(0x02); //initilize the LCD in 4bit Mode   lcd_WriteCmd(0x28); 
 lcd_WriteCmd(0x0C); // display ON cursor ON 
 lcd_WriteCmd(0x01); // clear the LCD 
 lcd_WriteCmd(0x80); // move the Cursor to First line First Position    }     
// lcd Write command function void  lcd_WriteCmd( char a)  {     dataport=(a & 0xf0);   rs=0;   rw=0;   en=1;      lOMoAR cPSD| 58583460  delay_us(1);   en=0;   delay_us(1); 
 dataport=((a<<4) & 0xf0); rs=0;   rw=0;   en=1;   delay_us(1); en=0;   delay_us(1); }     
 // lcd writedata function void  lcd_Writedata( char a)  {       dataport=(a & 0xf0);   rs=1;   rw=0;   en=1;   delay_us(1);   en=0;     delay_us(1); 
 dataport=((a <<4) & 0xf0); rs=1;   rw=0;   en=1;   delay_us(1);   en=0;     delay_us(1);    }   
 //lcd gotolinetwo fuction void  lcd_GoToLineTwo()  { 
 lcd_WriteCmd(LineTwo); // move the Cursor to Second line First Position      lOMoAR cPSD| 58583460 }       
//lcd go to X(first row), Y(second row) line