Friday, October 19, 2012

Schematic robot line folower ( Robot Mengikuti Jalur Garis )


Program IC :


#include d:\mc51\8051io.h
#include d:\mc51\8051reg.h
extern register unsigned char speedleft,speedright;
register unsigned char high,low,flag,time;

main()
{
  P1=0x40;
  P3=0xff;
  high = 80;
  low  = 30;
  flag = 0;
  time = 50;
  Start();
    while(1) {
              P3|= 0x0f;
              Run();
              }
}

Start()
{
  char exit,key;
  exit =1;
     while(exit)
      {
        key = P1;
        if((key & 0x40)==0) exit=0;
      }
}        

Run()
{
   char sensors;
   sensors = (P3 &=0x0f);

       if((sensors & 0x01)==0) {
        TurnRight();
        flag = 1;              }

 else  if((sensors & 0x08)==0) {
         TurnLeft();
         flag = 2;             }
 else  if(sensors == 0x09)    {
        Forward(high);
        flag = 0;              }

 else  if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
          Forward(low);

}

Forward(char speed)
{
  P1=0x64;
  speedright = speed+10;
  speedleft  = speed;
  delay(time);
}

TurnRight()
{
  P1=0x68;
  speedright = low+5;
  speedleft  = low;
  delay(time);
}

TurnLeft()
{
  P1=0x54;
  speedright = low+5;
  speedleft  = low;
  delay(time);
}

Reverse(char speed)
{
  P1=0x58;
  speedright = speed;
  speedleft  = speed+5;
  delay(time);
}


Asebler :


*#cpu 8051 Tiny
*
* DDS MICRO-C 8031/51 Startup Code & Runtime library for TINY model
*
* Copyright 1991-1999 Dave Dunfield
* All rights reserved.
*
        ORG    $0000         $0800  CODE Starts here (Normally in ROM)
        LJMP   START

        ORG    $0003
        LJMP   SERVICE_EX0

        ORG    $000B
        LJMP   SERVICE_TIMER0_INTERRUPT


* Fixed memory locations for alternate access to the R0-R7 register bank.
* If you are NOT useing BANK 0, these equates must be adjusted.
?R0 EQU 0 Used for "POP" from stack
?R1 EQU ?R0+1 Used to load index indirectly
?R2 EQU ?R0+2 "" "" "" ""
?R3 EQU ?R0+3 Used by some runtime lib functions
?R4 EQU ?R0+4
?R5 EQU ?R0+5
?R6 EQU ?R0+6
?R7 EQU ?R0+7
*
* Startup code entry point
*
* If you are NOT using interrupts, you can reclaim 50 bytes
* of code space by removing the following TWO lines.
*        AJMP    *+$0032         Skip interrupt vectors
*        DS      $0032-2         Reserve space for interrupt vectors
*
START   EQU     *
MOV SP,#?stk-1 Set up initial stack
        ORL  TMOD,#000001    set timer 0 to be counter 16 bit
        SETB    IE.7            $AF  EA
        SETB    IE.1            $A9  ET0 Enable timer 0 interrupt
        SETB    TCON.4          start timer 0


LCALL main Execute program
        SJMP    *               JUMP HERE

* EXIT to MON51 by calling the 'timer1' interrupt vector ($001B).
* This causes MON51 to think that a single-step operation has just
* completed, and therefore it saves the user registers, and performs
* a context switch back to the monitor.
*
* When using 2K addressing (CC51: -Z option, ASM51: -A option) this LCALL
* may fail "Out of range" because it gets translated to ACALL, and $001B
* may not be in the same 2K block as your program. Since 2K devices cannot
* support a debugger, change the ORG to $0000, and ...<continue below>...
*
* If you are NOT using MON51 (or MONICA which works the same), you will
* need to change this to whatever action you desire when main() returns.
* Suggestions: 1:freeze (SJMP *) 2:Restart (SJMP *&$FF00)
exit LCALL $001B Call Timer-1 interrupt
SJMP exit Incase he go's again

==============assembly code============================

SERVICE_TIMER0_INTERRUPT   EQU *
   PUSH ACC
   PUSH PSW
   MOV  TH0,#$FF      reload timer 0 for ms
   MOV  TL0,#$00
   INC  tick

   MOV  A,tick
   CJNE A,#100,RIGHT
   MOV  tick,#0

RIGHT
   CLR  C
   SUBB A,speedright
   JC   ON_RIGHT
   CLR  P1.0
   SJMP LEFT

ON_RIGHT
   SETB P1.0

LEFT
   MOV  A,tick
   CLR  C
   SUBB A,speedleft
   JC   ON_LEFT
   CLR  P1.1
   SJMP EXIT_I

ON_LEFT
   SETB P1.1

EXIT_I
   POP  PSW
   POP  ACC
   RETI

SERVICE_EX0 EQU *
   INC  cputick
   RETI


$SE:1
*#map1 Segment 1, initialized variables
$SE:2
*#map2 Segment 2, internal "register" variables
ORG $0008 Internal ram ALWAYS starts here

tick         DS  1
speedright   DS  1                                                
speedleft    DS  1
cputick      DS  1


Stumble
Delicious
Technorati
Twitter
Digg
Facebook
Reddit
Feed

Schematic Smoke detector (asap rokok)



Stumble
Delicious
Technorati
Twitter
Digg
Facebook
Reddit
Feed

Schematic Plip Plop variasi


Stumble
Delicious
Technorati
Twitter
Digg
Facebook
Reddit
Feed

Shematic sirine police


Stumble
Delicious
Technorati
Twitter
Digg
Facebook
Reddit
Feed

Schematic Sensor Tepuk

Rangkaian ini menggunakan MIC sebagai sensornya. jika ada suara tepukan tangan satu kali maka sensor akan mendeteksi dan menjadi saklar untuk menghidupkan output (lampu), begitupun sebaliknya jika ingin mematikan lampu tepuk sekali, maka lampu akan mati.


Stumble
Delicious
Technorati
Twitter
Digg
Facebook
Reddit
Feed

Download software simulator elektronika (LiveWire)


Pada kesempatan kali ini saya ingin membagi sebuah software yang berguna untuk membantu dalam pembuatan rangkaian elektronika. sebelum di aplikasikan ke PCB langsung, lebih baiknya kita menggunakan simulator ini untuk mengetahui kesalahan kesalahan dari rangkaian itu sendiri sebelum anda mengaplikasikan rangkaian tersebut ke PCB agar mengurangi kerugian yang didapat bila kita langsung aplikasikan ke PCB lansung. langsung saja jika anda sudah mrndapatkan gambaran dan penasarn akan software ini silahkan download ::

Stumble
Delicious
Technorati
Twitter
Digg
Facebook
Reddit
Feed