ธันวาคม 13, 2018, 01:29:14 AM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
 

หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: การเขียนคำสั่งวงจรควบคุม LED สำหรับป้ายไฟ  (อ่าน 7542 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

สุวิทย์@ms-kit
นกจะบินได้สูงแค่ไหน ไม่สำคัญ ถ้ามันบินด้วยปีกของตัวเอง
Global Moderator
สมาชิกระดับ 5
*****

 ขอบคุณ
ให้: 600 : รับ: 709


ได้รับการขอบคุณ: 44
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 1420 Level 30 : Exp 62%
HP: 0.2%

มนุษย์ลิขิตชะตากรรมตัวเอง


เว็บไซต์
« เมื่อ: กันยายน 30, 2012, 01:34:58 PM »
แบ่งปัน

การเขียนคำสั่งวงจรควบคุม LED สำหรับป้ายไฟ ขึ้นกับผู้ถนัดว่าเรียนอยู่ ชอบอยู่ภาษาใด
ปัจขุบันเขานิยมเล่นภาษาซี C  แต่ที่ยกมาเป็นภาษา เอสเซมบี้ ภาษาแรกๆ ของไมโครฯ
เอามาเป็นตัวอย่างให้เห็น 1 ตัวอย่าง (ไม่ใช่ในโครงงานหนังสือ สร้างป้ายไฟ แต่หลักการเหมือนๆกัน)


วงจร




----------------------------------------------------------------------------------

ซ้อร์สโค้ด
;***********************************************************
;LED_FUN.ASM -----------------------------------------------
;***********************************************************
;-----------------------------------------CONFIGURATION BITS
   STATUS   EQU 0x03    ;INFORM REGIS. ADD. TO ASSEMBLER
   PORTB    EQU 0x06    ;INFORM REGIS. ADD. TO ASSEMBLER
   TRISB    EQU 0x86    ;INFORM REGIS. ADD. TO ASSEMBLER
   COUNTA   EQU 0x20    ;INFORM REGIS. ADD. TO ASSEMBLER
   COUNTB   EQU 0x21    ;INFORM REGIS. ADD. TO ASSEMBLER
   COUNTC   EQU 0x22    ;INFORM REGIS. ADD. TO ASSEMBLER
;***********************************************************
   ORG        0X00    ; RESET VECTOR LOCATION
   GOTO     MAIN
;***********************************************************
;***********************************************************
MAIN
   CLRF         PORTA    ; CLEARING PORTA
   CLRF         PORTB    ; CLEARING PORTB
;***********************************************************
   BSF         STATUS,RP0    ; SETTING UP BANK1
   MOVLW     B'00000000'; SETTING UP I/O DIRECTIONS
   MOVWF     TRISB    ; SETTING UP I/O DIRECTIONS
   BCF         STATUS,RP0    ; RETURNING INTO BANK0
;***********************************************************
LOOP                        ;LOOP START
   MOVLW     B'00000001'; PUTING DATA ON PORTB
   MOVWF     PORTB      ; PUTING DATA ON PORTB
   CALL         ONE_SEC    ; CALLING FOR TABLE DATA
   MOVLW     B'00000010'; PUTING DATA ON PORTB
   MOVWF     PORTB      ; PUTING DATA ON PORTB
   CALL         ONE_SEC    ; CALLING FOR TABLE DATA
   MOVLW     B'00000100'; PUTING DATA ON PORTB
   MOVWF     PORTB      ; PUTING DATA ON PORTB
   CALL         ONE_SEC    ; CALLING FOR TABLE DATA
   MOVLW     B'00001000'; PUTING DATA ON PORTB
   MOVWF     PORTB      ; PUTING DATA ON PORTB
   CALL         ONE_SEC    ; CALLING FOR TABLE DATA
   GOTO         LOOP    ; LOOP FOREVER
;***********************************************************
; -------- ADJUSTABLE DELAY ROUTINE (NOT PRECISE)---------**
;***********************************************************
ONE_SEC               ; CALLING LINE FOR DELAY
   CLRF         COUNTA    ; CLEARING USER REGIDTER
   CLRF         COUNTB    ; CLEARING USER REGIDTER
;***********************************************************
DELAYLOOP        ; DELAY ROUTINE INTERNAL LOOP
   DECFSZ    COUNTA,F    ; DECREMENTING USER    
   GOTO         DELAYLOOP    ; CHECKING IF ZERO
   DECFSZ    COUNTB,1    ;            
   GOTO         DELAYLOOP    ;        
   RETURN        ;        
;***********************************************************
    END        ; END OF THE PROGRAM
;==================================================

HEX โค้ด

:020000040000FA
:0600000083018A013A2889
:08000800F000030E8301F1007A
:100010000A08F2008A010408F300A60A5F302602EB
:10002000031D2F280030A600A50A0A302502031D53
:100030002F280030A500220803192028A2032F280A
:100040002708003A03192E283B30A200270803197D
:100050002B28A7032F283B30A7002F2824108B1014
:100060000B117308840072088A00710E8300F00E71
:10007000700E0900B0239123FA300025D72387148E
:10008000B524A52400306F23A92409306F23FC3048
:10009000BF0514300C25A52412306F23A9241B3072
:1000A0006F23FC30BF0514300C258610A00183019E
:1000B000F9011525DF20201B6528A01A6528201AC4
:1000C000912820198028A01B7228B524A52425304A
:1000D0006723A92400306723FC30BF05FA300025D0
:1000E000A01F572820198028B5248723A524003075
:1000F0006723A92409306723FC30BF05D2212015CE
:100100001525DF207508C620FA300025A01F6528B8
:10011000241C8B2880288B01A4019123B5248614EC
:100120002016463000251525DF209921A1189E288C
:10013000211AB028A119AE282119AC2805100630C3
:10014000B9244E30D4247230D4240630BD2420305B
:10015000D4242030D424B128B920B128B920B12822
:10016000B920A01F572875081C2532254A252016BE
:1001700091280630B9244C30D4246F30D424063072
:10018000BD244330D4247230D42408002708F90059
:10019000FA013C240230BD244C08303ED4244D08E2
:1001A000303ED4243A30D4242208F900FA013C2409
:1001B0004C08303ED4244D08303ED424080078301A
:1001C00075020318F02832307502031CF328A017BB
:1001D00008008B01A00186308400FE3080000800FA
:0C01E000E92020176528E920A0166528FA
:1002700001308A003B08820749344E3449345434F3
:10028000493441344C3449345A3449344E34473477
:100290002E342E342E342E340034203420342034A6







บันทึกการเข้า


Somlak.M
สมาชิก VIP
สมาชิกระดับ 2
*

 ขอบคุณ
ให้: 9 : รับ: 40


ได้รับการขอบคุณ: 1
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 47 Level 5 : Exp 53%
HP: 0.1%

Do it your self


เว็บไซต์
« ตอบ #1 เมื่อ: ตุลาคม 01, 2012, 07:31:09 AM »
แบ่งปัน

ลองแปลงเป็น C ดูบ้าง


โค๊ด:
/*
*Program    :LED Running
*Filename   :led_running.c
*Author     :Somlak Mangnimit
*Date       :01/10/2012
*Device     :PIC16F84
*Freq       :4MHz
*Compiler   :HI-TECH C v9.83
*Version    :-
*Note       :-
*/

#include    <htc.h>
#define     _XTAL_FREQ 4000000

//device config
__CONFIG(FOSC_XT&WDTE_OFF&PWRTE_OFF&CP_OFF);

//main program
void main(void){
TRISB = 0x00;       //all as output

    for(;;){
        PORTB = 0b00000001;
        __delay_ms(200);
        PORTB = 0b00000010;
        __delay_ms(200);
        PORTB = 0b00000100;
        __delay_ms(200);
        PORTB = 0b00001000;
        __delay_ms(200);
        PORTB = 0b00010000;
        __delay_ms(200);
        PORTB = 0b00100000;
        __delay_ms(200);
        PORTB = 0b01000000;
        __delay_ms(200);
        PORTB = 0b10000000;
        __delay_ms(200);
    }

}
บันทึกการเข้า

สมลักษณ์ มั่งนิมิตร 10/1 หมู่6 บ้านแปดแก้ว ต.ป่างิ้ว อ.เมือง จ.อ่างทอง 14000 โทร 089-819-4508

เต๋อ อุตรดิตถ์
สมาชิก พรีเมี่ยม
สมาชิกระดับ 2
*

 ขอบคุณ
ให้: 10 : รับ: 4


ได้รับการขอบคุณ: 0
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 33 Level 4 : Exp 64%
HP: 0.1%

ทีมงานรักสงบ E22 ZYQ


« ตอบ #2 เมื่อ: ตุลาคม 01, 2012, 04:53:36 PM »
แบ่งปัน

เยี่ยมเลยครับอาจารย์   ขอบคุณมากครับ.......
บันทึกการเข้า

นายวิวัฒน์ โพธิ์เจริญ (เฏ๋อ) โทร.084-592-4909 Dtac        สำนักงานเทศบาลตำบลบ้านด่านนาขาม  9/9 ม.1 ต.บ้านด่านนาขาม อ.เมือง จ.อุตรดิตถ์ 53000

บุญส่ง โพนทราย (ร้อยเอ็ด)
สมาชิก พรีเมี่ยม
สมาชิกระดับ 4
*

 ขอบคุณ
ให้: 49 : รับ: 9


ได้รับการขอบคุณ: 0
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 75 Level 6 : Exp 100%
HP: 0.1%


« ตอบ #3 เมื่อ: ตุลาคม 05, 2012, 06:42:05 PM »
แบ่งปัน

มึนเลยครับ   พี่น้อง
บันทึกการเข้า

34 ม 9  ต. โพนทราย  อ. โพนทราย  จ.  ร้อยเอ็ด  45240
Mackenzie
สมาชิก
*

 ขอบคุณ
ให้: 0 : รับ: 0


ได้รับการขอบคุณ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 2 Level 1 : Exp 40%
HP: 0.1%


« ตอบ #4 เมื่อ: ธันวาคม 09, 2015, 07:41:32 PM »
แบ่งปัน

ยากจังขนาดมีแพทเทิ้ลให้แล้วนะ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.13 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
Blue Theme by Nevikup