รู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม 8051 ในภาษาแอสเซมบลี

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ภาษาแอสเซมบลีเป็นภาษาโปรแกรมระดับต่ำที่ใช้ในการเขียนโค้ดโปรแกรมในแง่ของการจำ แม้ว่าจะมีภาษาระดับสูงจำนวนมากที่เป็นที่ต้องการในปัจจุบัน แต่ภาษาโปรแกรมแอสเซมบลีก็นิยมใช้ในหลาย ๆ แอปพลิเคชันสามารถใช้สำหรับการปรับแต่งฮาร์ดแวร์โดยตรง นอกจากนี้ยังใช้ในการเขียนไฟล์ รหัสการเขียนโปรแกรม 8051 อย่างมีประสิทธิภาพด้วยจำนวนรอบนาฬิกาที่น้อยลงโดยใช้หน่วยความจำน้อยลงเมื่อเทียบกับภาษาระดับสูงอื่น ๆ

8051 การเขียนโปรแกรมภาษาแอสเซมบลี

8051 การเขียนโปรแกรม



8051 การเขียนโปรแกรมภาษาแอสเซมบลี

ภาษาแอสเซมบลีเป็นภาษาโปรแกรมที่เกี่ยวข้องกับฮาร์ดแวร์โดยสมบูรณ์ นักออกแบบแบบฝังต้องมีความรู้เพียงพอเกี่ยวกับฮาร์ดแวร์ของโปรเซสเซอร์หรือคอนโทรลเลอร์เฉพาะก่อนที่จะเขียนโปรแกรม ภาษาแอสเซมบลีได้รับการพัฒนาโดยช่วยจำดังนั้นผู้ใช้จึงไม่สามารถเข้าใจได้โดยง่ายในการแก้ไขโปรแกรม


8051 การเขียนโปรแกรมภาษาแอสเซมบลี

8051 การเขียนโปรแกรมภาษาแอสเซมบลี



ภาษาโปรแกรมแอสเซมบลีได้รับการพัฒนาโดยคอมไพเลอร์ต่างๆและ ที่“ลานโบว์ลิ่ง' เหมาะที่สุดสำหรับ ไมโครคอนโทรลเลอร์การเขียนโปรแกรม การพัฒนา. มicrocontrollersหรือตัวประมวลผลสามารถเข้าใจเฉพาะภาษาไบนารีในรูปแบบ '0s หรือ 1s' แอสเซมเบลอร์จะแปลงภาษาแอสเซมบลีเป็นภาษาไบนารีจากนั้นเก็บไว้ในไมโครคอนโทรลเลอร์หน่วยความจำในการทำงานเฉพาะ

8051 ไมโครคอนโทรลเลอร์ Architecuture

8051ไมโครคอนโทรลเลอร์คือ CISC ตามสถาปัตยกรรม Harvard และมีอุปกรณ์ต่อพ่วงเช่น 32 I / O ตัวจับเวลา / ตัวนับการสื่อสารแบบอนุกรมและความทรงจำไมโครคอนโทรลเลอร์ต้องใช้โปรแกรมเพื่อดำเนินการที่ต้องใช้หน่วยความจำสำหรับบันทึกและอ่านฟังก์ชัน 8051ไมโครคอนโทรลเลอร์ประกอบด้วยหน่วยความจำ RAM และ ROM เพื่อจัดเก็บคำแนะนำ

8051 ไมโครคอนโทรลเลอร์ Arctitecuture

8051 ไมโครคอนโทรลเลอร์ Architecuture

การลงทะเบียนเป็นส่วนหลักใน โปรเซสเซอร์และไมโครคอนโทรลเลอร์ ซึ่งมีอยู่ในหน่วยความจำที่ช่วยให้รวบรวมและจัดเก็บข้อมูลได้เร็วขึ้น การเขียนโปรแกรมภาษาแอสเซมบลี 8051 ขึ้นอยู่กับรีจิสเตอร์หน่วยความจำ หากเราต้องการจัดการข้อมูลไปยังโปรเซสเซอร์หรือคอนโทรลเลอร์โดยการลบการบวก ฯลฯ เราไม่สามารถทำได้โดยตรงในหน่วยความจำ แต่ต้องมีการลงทะเบียนเพื่อประมวลผลและจัดเก็บข้อมูลไมโครคอนโทรลเลอร์ประกอบด้วยการลงทะเบียนหลายประเภทที่สามารถจำแนกได้ตามคำแนะนำหรือเนื้อหาที่ดำเนินการอยู่

8051 โปรแกรมไมโครคอนโทรลเลอร์ในภาษาแอสเซมบลี

ภาษาแอสเซมบลีประกอบด้วยองค์ประกอบที่ใช้ในการเขียนโปรแกรมทั้งหมดลักษณะตามลำดับ. ปฏิบัติตามกฎที่กำหนดเพื่อเขียนโปรแกรมในภาษาแอสเซมบลี


กฎของภาษาแอสเซมบลี

  • รหัสการประกอบต้องเขียนด้วยตัวอักษรตัวพิมพ์ใหญ่
  • ป้ายกำกับต้องตามด้วยเครื่องหมายจุดคู่ (ป้ายกำกับ :)
  • สัญลักษณ์และป้ายกำกับทั้งหมดต้องขึ้นต้นด้วยตัวอักษร
  • ความคิดเห็นทั้งหมดพิมพ์เป็นตัวพิมพ์เล็ก
  • บรรทัดสุดท้ายของโปรแกรมต้องเป็นคำสั่ง END

ตัวช่วยจำภาษาแอสเซมบลีอยู่ในรูปแบบของ op-code เช่น MOV, ADD, JMP และอื่น ๆ ซึ่งใช้ในการดำเนินการ

รหัส Op: op-code เป็นคำสั่งเดียวที่ CPU สามารถเรียกใช้งานได้ ที่นี่ op-code คือคำสั่ง MOV

ตัวดำเนินการ: ตัวถูกดำเนินการเป็นข้อมูลชิ้นเดียวที่สามารถดำเนินการได้โดยใช้รหัส op ตัวอย่างการดำเนินการคูณจะดำเนินการโดยตัวถูกดำเนินการที่คูณด้วยตัวถูกดำเนินการ

ไวยากรณ์: MUL a,

องค์ประกอบของการเขียนโปรแกรมภาษาแอสเซมบลี:

  • รวบรวมแนวทาง
  • ชุดคำสั่ง
  • โหมดที่อยู่

ประกอบคำแนะนำ:

คำสั่งในการประกอบจะบอกทิศทางไปยัง CPU 8051ไมโครคอนโทรลเลอร์ประกอบด้วยคำสั่งการประกอบหลายประเภทเพื่อกำหนดทิศทางไปยังชุดควบคุม คำสั่งที่มีประโยชน์ที่สุดคือการเขียนโปรแกรม 8051 เช่น:

  • ORG
  • DB
  • EQU
  • สิ้นสุด

ORG(ต้นกำเนิด): คำสั่งนี้ระบุจุดเริ่มต้นของโปรแกรม ใช้เพื่อตั้งค่าที่อยู่รีจิสเตอร์ระหว่างการประกอบ ตัวอย่างเช่น ORG 0000h บอกคอมไพเลอร์โค้ดที่ตามมาทั้งหมดเริ่มต้นที่ที่อยู่ 0000h

ไวยากรณ์: ORG 0000 ชม

DB(กำหนดไบต์): กำหนดไบต์ใช้เพื่ออนุญาตสตริงไบต์ ตัวอย่างเช่นพิมพ์“ EDGEFX” โดยแต่ละอักขระจะถูกยึดตามที่อยู่และสุดท้ายพิมพ์“ สตริง” โดยฐานข้อมูลโดยตรงด้วยเครื่องหมายคำพูดคู่

ไวยากรณ์:

ORG 0000 ชม

MOV a, # 00h
————-
————-
DB“ EDGEFX”

EQU (เทียบเท่า): คำสั่งสมมูลใช้เพื่อหาค่าที่อยู่ของตัวแปร

ไวยากรณ์:

reg เท่ากับ,09 น
—————–
—————–
MOVreg,# 2 ชม

สิ้นสุด: คำสั่ง END ใช้เพื่อระบุจุดสิ้นสุดของโปรแกรม

ไวยากรณ์:

reg เท่ากับ,09 น

—————–
—————–
MOVreg,# 2 ชม
สิ้นสุด

โหมดที่อยู่:

วิธีการเข้าถึงข้อมูลเรียกว่าโหมดกำหนดแอดเดรส CPU สามารถเข้าถึงข้อมูลได้หลายวิธีโดยใช้โหมดกำหนดแอดเดรส 8051ไมโครคอนโทรลเลอร์ประกอบด้วยห้าโหมดการกำหนดแอดเดรสเช่น:

  • โหมดกำหนดแอดเดรสทันที
  • ลงทะเบียนโหมดการกำหนดที่อยู่
  • โหมดที่อยู่โดยตรง
  • โหมดที่อยู่ทางอ้อม
  • ดัชนีฐานที่อยู่โหมด

โหมดกำหนดแอดเดรสทันที:

ในโหมดการกำหนดแอดเดรสนี้ต้นทางจะต้องเป็นค่าที่สามารถตามด้วย '#' ได้และปลายทางต้องเป็น การลงทะเบียน SFR การลงทะเบียนสำหรับวัตถุประสงค์ทั่วไป และที่อยู่. ใช้สำหรับจัดเก็บค่าในการลงทะเบียนหน่วยความจำทันที

ไวยากรณ์:

MOV A, # 20h // A คือการลงทะเบียนสะสม 20 ถูกเก็บไว้ใน A //
MOV R0,# 15 // R0 เป็นรีจิสเตอร์วัตถุประสงค์ทั่วไป 15 ถูกเก็บไว้ในทะเบียน R0 //
MOV P0, # 07h // P0 คือ SFR register07 ถูกเก็บไว้ใน P0 //
MOV 20 ชม,# 05h // 20h คือที่อยู่ของ register 05 ที่เก็บไว้ใน 20h //

อดีต:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20 ค่าสุดท้ายจะถูกเก็บไว้ใน R0 //

ลงทะเบียนโหมดที่อยู่:

ในโหมดการกำหนดแอดเดรสนี้ต้นทางและปลายทางต้องเป็นรีจิสเตอร์ แต่ไม่ใช่รีจิสเตอร์วัตถุประสงค์ทั่วไป ดังนั้นข้อมูลจะไม่ถูกย้ายภายในไฟล์ การลงทะเบียนธนาคารเพื่อวัตถุประสงค์ทั่วไป .

ไวยากรณ์:

MOV A, B // A คือการลงทะเบียน SFR, B คือการลงทะเบียนเอนกประสงค์ //
MOV R0, R1 // คำสั่งไม่ถูกต้อง GPR เป็น GPR ไม่ได้ //

อดีต:

MOV R0, # 02 ชม
MOV A, # 30 ชม
เพิ่ม R0, A // R0<—R0+A, the final value is stored in the R0 register//

โหมดที่อยู่โดยตรง

ในโหมดการกำหนดแอดเดรสนี้ต้นทางหรือปลายทาง (หรือทั้งต้นทางและปลายทาง) ต้องเป็นแอดเดรส แต่ไม่ใช่ค่า

ไวยากรณ์:

MOV ก,20h // 20h คือที่อยู่ A คือ register //
MOV 00h, 07h // ทั้งสองระบุถึงการลงทะเบียน GPS //

อดีต:

MOV 07 ชม,# 01h
MOV A, # 08 น
เพิ่ม,07 ชม. // ก<—A+07h the final value is stored in A//

โหมดที่อยู่ทางอ้อม:

ในโหมดการกำหนดแอดเดรสนี้ต้นทางหรือปลายทาง (หรือปลายทางหรือต้นทาง) ต้องเป็นถึงที่อยู่ทางอ้อม แต่ไม่ใช่ค่า โหมดการกำหนดแอดเดรสนี้สนับสนุนแนวคิดตัวชี้ พอยน์เตอร์คือตัวแปรที่ใช้เก็บแอดเดรสของตัวแปรอื่น แนวคิดตัวชี้นี้ใช้สำหรับรีจิสเตอร์ R0 และ R1 เท่านั้น

ไวยากรณ์:

MOVR0, # 01h // 01 ค่าถูกเก็บไว้ในทะเบียน R0 ที่อยู่ R0 คือ 08h //
MOV R1, # 08h // R1 คือตัวแปรตัวชี้ที่ร้านค้าที่อยู่ (08h) ของ R0 //
MOV 20 ชม,@ R1 // 01 ค่าถูกเก็บไว้ในที่อยู่ 20 ชั่วโมงของทะเบียน GP //

โหมดที่อยู่ทางอ้อม

โหมดที่อยู่ทางอ้อม

ดัชนีฐานที่อยู่โหมด:

โหมดการกำหนดแอดเดรสนี้ใช้เพื่ออ่านข้อมูลจากไฟล์ หน่วยความจำภายนอกหรือหน่วยความจำ ROM . โหมดการกำหนดแอดเดรสทั้งหมดไม่สามารถอ่านข้อมูลจากหน่วยความจำรหัสได้ รหัสต้องอ่านผ่านการลงทะเบียน DPTR DPTR ใช้เพื่อชี้ข้อมูลในรหัสหรือหน่วยความจำภายนอก

ไวยากรณ์:

MOVC A, @ A + DPTR // C ระบุหน่วยความจำรหัส //
MOCX A, @ A + DPTR // X ระบุหน่วยความจำภายนอก //
EX: MOV A, # 00H // 00H ถูกเก็บไว้ในทะเบียน A //
MOV DPTR, # 0500H // DPTR ชี้ที่อยู่ 0500h ในหน่วยความจำ //
MOVC A, @ A + DPTR // ส่งค่าถึงทะเบียน A //
MOV P0, A // วันที่ A ส่งให้นายทะเบียน PO //

ชุดคำสั่ง:

ชุดคำสั่งคือโครงสร้างของคอนโทรลเลอร์หรือโปรเซสเซอร์ที่จัดเตรียมคำสั่งให้กับคอนโทรลเลอร์เพื่อเป็นแนวทางให้คอนโทรลเลอร์สำหรับการประมวลผลข้อมูล ชุดคำสั่งประกอบด้วยคำสั่งประเภทข้อมูลดั้งเดิมโหมดการกำหนดแอดเดรสการลงทะเบียนขัดจังหวะการจัดการพิเศษและสถาปัตยกรรมหน่วยความจำ 8051ไมโครคอนโทรลเลอร์ สามารถปฏิบัติตามคำแนะนำ CISC ด้วยสถาปัตยกรรม Harvard ในกรณีของการเขียนโปรแกรม 8051 คำแนะนำ CISC ประเภทต่างๆ ได้แก่ :

  • ชุดคำสั่งการถ่ายโอนข้อมูล
  • ชุดคำสั่งตามลำดับ
  • ชุดคำสั่งเลขคณิต
  • แตกแขนง Iคำแนะนำชุด
  • ชุดคำสั่งวนซ้ำ
  • ชุดคำสั่งเงื่อนไข
  • ชุดคำสั่งที่ไม่มีเงื่อนไข
  • ชุดคำสั่งเชิงตรรกะ
  • ชุดคำสั่งบูลีน

ชุดคำสั่งเลขคณิต:

คำแนะนำทางคณิตศาสตร์ดำเนินการขั้นพื้นฐานเช่น:

  • ส่วนที่เพิ่มเข้าไป
  • การคูณ
  • การลบ
  • แผนก

ส่วนที่เพิ่มเข้าไป:

ORG 0000 ชม
MOV R0, # 03H // ย้ายค่า 3 ไปที่รีจิสเตอร์ R0 //
MOV A, # 05H // ย้ายค่า 5 ไปที่ตัวสะสม A //
เพิ่ม A, 00H //เพิ่มมูลค่าด้วยค่า R0 และเก็บผลลัพธ์ใน//
สิ้นสุด

การคูณ:

ORG 0000 ชม
MOV R0, # 03H // ย้ายค่า 3 ไปที่รีจิสเตอร์ R0 //
MOV A, # 05H // ย้ายค่า 5 ไปที่ตัวสะสม A //
MUL A, 03H //ทวีคูณผลลัพธ์จะถูกเก็บไว้ใน Accumulator A //
สิ้นสุด

การลบ:

ORG 0000 ชม
MOV R0, # 03H // ย้ายค่า 3 เพื่อลงทะเบียน R0 //
MOV A, # 05H // ย้ายค่า 5 ไปที่ตัวสะสม A //
SUBB A, 03H // ค่าผลลัพธ์ถูกเก็บไว้ใน Accumulator A //
สิ้นสุด

แผนก:

ORG 0000 ชม
MOV R0, # 03H // ย้ายค่า 3 เพื่อลงทะเบียน R0 //
MOV A, # 15H // ย้ายค่า 5 ไปที่ตัวสะสม A //
DIV A, 03H // ค่าสุดท้ายจะถูกเก็บไว้ใน Accumulator A //
สิ้นสุด

คำแนะนำตามเงื่อนไข

CPU รันคำสั่งตามเงื่อนไขโดยการตรวจสอบสถานะบิตเดียวหรือสถานะไบต์ 8051ไมโครคอนโทรลเลอร์ประกอบด้วยคำแนะนำเงื่อนไขต่างๆเช่น:

  • เจบี -> กระโดดลงไปด้านล่าง
  • JNB -> กระโดดหากไม่อยู่ด้านล่าง
  • JC -> กระโดดถ้าพกพา
  • JNC -> กระโดดถ้าไม่พก
  • JZ -> กระโดดถ้าเป็นศูนย์
  • JNZ -> กระโดดถ้าไม่ศูนย์
คำแนะนำตามเงื่อนไข

คำแนะนำตามเงื่อนไข

1. ไวยากรณ์:

JB P1.0, ฉลาก
- - - - - - - -
- - - - - - - -
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
สิ้นสุด

2. ไวยากรณ์:

JNB P1.0 ฉลาก
- - - - - - - -
- - - - - - - -
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
สิ้นสุด

3. ไวยากรณ์:

JC, ฉลาก
- - - - - - - -
- - - - - - - -
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
สิ้นสุด

4. ไวยากรณ์:

JNC ฉลาก
- - - - - - - -
- - - - - - - -
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
สิ้นสุด
5. ไวยากรณ์:

JZ, ฉลาก
- - - - - - - -
- - - - - - - -
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
สิ้นสุด

6. ไวยากรณ์:

JNZ, ฉลาก
- - - - - - - -
- - - - - - - -
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
สิ้นสุด

คำแนะนำในการโทรและกระโดด:

คำแนะนำการโทรและการกระโดดใช้เพื่อหลีกเลี่ยงการจำลองโค้ดของโปรแกรม เมื่อรหัสเฉพาะบางรหัสใช้มากกว่าหนึ่งครั้งในที่ต่างๆในโปรแกรมถ้าเราพูดถึงชื่อเฉพาะถึงรหัสแล้วเราสามารถใช้ชื่อนั้นได้ทุกที่ในโปรแกรมโดยไม่ต้องป้อนรหัสทุกครั้ง ซึ่งจะช่วยลดความซับซ้อนของโปรแกรม การเขียนโปรแกรม 8051 ประกอบด้วยคำสั่งการโทรและการกระโดดเช่น LCALL, SJMP

  • LCALL
  • โทร
  • SJMP
  • LJMP

1. ไวยากรณ์:

ORG 0000 ชม
- - - - - - - -
- - - - - - - -
ACALL, ฉลาก
- - - - - - - -
- - - - - - - -
หยุด SJMP
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
- - - - - - - -
ขวา
หยุด:นพ

2. ไวยากรณ์:

ORG 0000 ชม
- - - - - - - -
- - - - - - - -
LCALL, ฉลาก
- - - - - - - -
- - - - - - - -
หยุด SJMP
ป้ายกำกับ: - - - - - - - -
- - - - - - - -
- - - - - - - -
ขวา
หยุด:นพ

คำแนะนำในการโทรและกระโดด

คำแนะนำในการโทรและกระโดด

คำแนะนำแบบวนซ้ำ:

คำแนะนำการวนซ้ำใช้เพื่อทำซ้ำบล็อกทุกครั้งในขณะที่ดำเนินการเพิ่มและลด 8051ไมโครคอนโทรลเลอร์ประกอบด้วยคำแนะนำการวนซ้ำสองประเภท:

  • CJNE -> เปรียบเทียบและกระโดดหากไม่เท่ากัน
  • DJNZ -> ลดลงและกระโดดถ้าไม่ใช่ศูนย์

1. ไวยากรณ์:

ของCJNE
MOV A, # 00H
MOV B, # 10H
ฉลาก: INC A.
- - - - - -
- - - - - -
CJNE A ฉลาก

2. ไวยากรณ์:

ของDJNE

MOV R0, # 10 ชม
ฉลาก: - - - - - -
- - - - - -
DJNE R0 ฉลาก
- - - - - -
- - - - - -
สิ้นสุด

ชุดคำสั่งเชิงตรรกะ:

ชุดคำสั่งไมโครคอนโทรลเลอร์ 8051 ให้คำสั่ง AND, OR, XOR, TEST, NOT และ Boolean logic สำหรับตั้งค่าและล้างบิตตามความต้องการในโปรแกรม

ชุดคำสั่งเชิงตรรกะ

ชุดคำสั่งเชิงตรรกะ

1. ไวยากรณ์:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ORL A, R0 // 00100000/00000101 = 00000000 //

2. ไวยากรณ์:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ANL A, R0

3. ไวยากรณ์:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
XRL A, R0

ตัวดำเนินการเปลี่ยนเกียร์

ตัวดำเนินการกะใช้สำหรับการส่งและรับข้อมูลอย่างมีประสิทธิภาพ 8051ไมโครคอนโทรลเลอร์ประกอบด้วยตัวดำเนินการกะสี่ตัว:

  • RR -> หมุนไปทางขวา
  • RRC -> หมุนขวาผ่านการพกพา
  • RL -> หมุนไปทางซ้าย
  • RLC -> หมุนซ้ายผ่านการพกพา

หมุนไปทางขวา (RR):

ในการดำเนินการเปลี่ยนนี้ MSB จะกลายเป็น LSB และบิตทั้งหมดจะเลื่อนไปทางด้านขวาทีละบิตตามลำดับ

ไวยากรณ์:

MOV A, # 25 ชม
RR ก

หมุนซ้าย (RL):

ในการดำเนินการเปลี่ยนนี้ MSB จะกลายเป็น LSB และบิตทั้งหมดจะเลื่อนไปทางด้านซ้ายทีละบิตตามลำดับ

ไวยากรณ์:

MOV A, # 25 ชม
RL ก

RRC หมุนขวาผ่านการพกพา:

ในการดำเนินการเปลี่ยนเกียร์ LSB จะเคลื่อนที่ไปมาและการพกพาจะกลายเป็น MSB และบิตทั้งหมดจะเลื่อนไปทางด้านขวาทีละตำแหน่ง

ไวยากรณ์:

MOV A, # 27 ชม
RRC ก

RLC หมุนซ้ายผ่าน Carry:

ในการดำเนินการเปลี่ยนเกียร์ MSB จะเคลื่อนที่ไปมาและการพกพาจะกลายเป็น LSB และบิตทั้งหมดจะเลื่อนไปทางด้านซ้ายในตำแหน่งทีละบิต

ไวยากรณ์:

MOV A, # 27 ชม
RLC ก

โปรแกรม C แบบฝังตัวพื้นฐาน:

ไมโครคอนโทรลเลอร์การเขียนโปรแกรมแตกต่างกันไปสำหรับระบบปฏิบัติการแต่ละประเภท มี ระบบปฏิบัติการจำนวนมาก เช่น Linux, Windows, RTOS เป็นต้น อย่างไรก็ตาม RTOS มีข้อดีหลายประการสำหรับการพัฒนาระบบฝังตัว ตัวอย่างการเขียนโปรแกรมระดับ Assembly บางส่วนได้รับด้านล่าง

ไฟ LED กะพริบโดยใช้ 8051ไมโครคอนโทรลเลอร์:

  • ตัวเลขแสดงบนจอแสดงผล 7 ส่วนโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • การคำนวณตัวจับเวลา / ตัวนับและโปรแกรมโดยใช้ 8051ไมโครคอนโทรลเลอร์
  • การคำนวณและโปรแกรมการสื่อสารแบบอนุกรมโดยใช้ 8051ไมโครคอนโทรลเลอร์

โปรแกรม LED 8051 มicrocontrller

1. WAP เพื่อสลับไฟ LED PORT1

ORG 0000H
TOGLE: MOV P1, # 01 //ย้าย00000001 ไปยังทะเบียน p1 //
CALL DELAY // ดำเนินการล่าช้า //
MOV A, P1 // ย้ายค่า p1ไปยังตัวสะสม //
CPL A // เสริมค่า //
MOV P1, A // ย้าย 11111110 ไปที่ port1 register //
CALL DELAY // ดำเนินการล่าช้า //
SJMP TOGLE
DELAY: MOV R5, # 10H // โหลด register R5 ด้วย 10 //
สอง: MOV R6, # 200 // โหลด register R6 ด้วย 200 //
ONE: MOV R7, # 200 // โหลด register R7 ด้วย 200 //
DJNZ R7, $ // ลดลง R7 จนกว่าจะเป็นศูนย์ //
DJNZ R6, ONE // ลด R7 จนกว่าจะเป็นศูนย์ //
DJNZ R5, TWO // ลด R7 จนกว่าจะเป็นศูนย์ //
RET // กลับไปที่โปรแกรมหลัก //
สิ้นสุด

การคำนวณและโปรแกรมจับเวลา / ตัวนับโดยใช้ 8051 มicrocontroller:

ความล่าช้าเป็นปัจจัยสำคัญอย่างหนึ่งในการพัฒนาซอฟต์แวร์ประยุกต์ ตัวจับเวลาและตัวนับ เป็นส่วนประกอบฮาร์ดแวร์ของไฟล์ไมโครคอนโทรลเลอร์ซึ่งใช้ในหลาย ๆ แอพพลิเคชั่นเพื่อให้การหน่วงเวลาที่แม่นยำด้วยการนับพัล. ขทั้งสองงานจะดำเนินการโดยเทคนิคซอฟต์แวร์

1. WAP เพื่อคำนวณเวลาล่าช้า 500us

MOV TMOD, # 10H // เลือกโหมดจับเวลาโดยรีจิสเตอร์ //
MOV TH1, # 0FEH // เก็บเวลาหน่วงในบิตที่สูงขึ้น //
MOV TL1, # 32H // เก็บเวลาหน่วงในบิตต่ำ //
JNB TF1, $ // ลดค่าของตัวจับเวลาจนเป็นศูนย์ //
CLR TF1 // ล้างค่าสถานะตัวจับเวลานิดหน่อย//
CLR TR1 // ปิดตัวจับเวลา //

2. WAP เพื่อสลับไฟ LEDกับ5วินาทีเวลาล่าช้า

ORG 0000H
ผลตอบแทน: MOV PO, # 00H
ACALL DELAY
MOV P0, # 0FFH
ACALL DELAY
ผลตอบแทนของ SJUMP
DELAY: MOV R5, # 50H // โหลด register R5 ด้วย 50 //
DELAY1: MOV R6, # 200 // โหลด register R6 ด้วย 200 //
DELAY2: MOV R7, # 229 // โหลด register R7 ด้วย 200 //
DJNZ R7, $ // ลดลง R7 จนกว่าจะเป็นศูนย์ //
DJNZ R6, DELAY2 // R6 ลดลงจนเป็นศูนย์ //
DJNZ R5, DELAY1 // R5 ลดลงจนเป็นศูนย์ //
RET // กลับไปที่โปรแกรมหลัก //
สิ้นสุด

3. WAP เพื่อนับ 250 พัลส์โดยใช้ mode0 count0

ไวยากรณ์:

ORG 0000H
MOV TMOD, # 50H // เลือกตัวนับ //
MOV TH0, # 15 // ย้ายพัลส์การนับบิตที่สูงขึ้น //
MOV TH1, # 9FH //ย้ายพัลส์การนับบิตล่าง //
SET TR0 // บนตัวจับเวลา //
JNB $ // ลดค่าการนับจนถึงศูนย์ //
CLR TF0 // ล้างตัวนับตั้งค่าสถานะนิดหน่อย//
CLR TR0 // หยุดตัวจับเวลา //
สิ้นสุด

การเขียนโปรแกรมการสื่อสารแบบอนุกรมโดยใช้ 8051 มicrocontroller:

การสื่อสารแบบอนุกรม มักใช้ในการส่งและรับข้อมูล 8051ไมโครคอนโทรลเลอร์ประกอบด้วยการสื่อสารแบบอนุกรม UART / USART และสัญญาณจะถูกส่งและรับโดยTxและหมุด Rx การสื่อสาร UART ถ่ายโอนข้อมูลแบบอนุกรมทีละบิต UART เป็นโปรโตคอลแบบ half-duplex ที่ถ่ายโอนและรับข้อมูล แต่ไม่ใช่ในเวลาเดียวกัน

1. WAP เพื่อส่งอักขระไปยัง Hyper Terminal

MOV SCON, # 50H // ตั้งค่าการสื่อสารแบบอนุกรม //
MOV TMOD, # 20H // เลือกโหมดจับเวลา //
MOV TH1, # -3 // กำหนดอัตรารับส่งข้อมูล //
SET TR1 // บนตัวจับเวลา //
MOV SBUF, # 'S' // ส่ง S ไปยังหน้าต่างอนุกรม //
JNB TI, $ // ค่าลดลงของตัวจับเวลาจนกว่าจะเป็นศูนย์ //
CLR RI // ล้างรับการขัดจังหวะ //
CLR TR1 // ล้างตัวจับเวลา //

2. WAP เพื่อส่งอักขระรับโดย Hyper Terminal

MOV SCON, # 50H // ตั้งค่าการสื่อสารแบบอนุกรม //
MOV TMOD, # 20H // เลือกโหมดจับเวลา //
MOV TH1, # -6 // กำหนดอัตรารับส่งข้อมูล //
SET TR1 // บนตัวจับเวลา //
MOV SBUF, # 'S' // ส่ง S ไปยังหน้าต่างอนุกรม //
JNB RI, $ // ค่าลดลงของตัวจับเวลาจนกว่าจะเป็นศูนย์ //
CLR RI // ล้างรับการขัดจังหวะ //
MOV P0, SBUF // ส่งค่าลงทะเบียน SBUF ไปยังพอร์ต 0 //
CLR TR1 // ล้างตัวจับเวลา //

ทั้งหมดนี้เกี่ยวกับการเขียนโปรแกรมภาษาแอสเซมบลี 8051 โดยสังเขปด้วยโปรแกรมตามตัวอย่าง เราหวังว่าข้อมูลที่เพียงพอเกี่ยวกับภาษาแอสเซมบลีนี้จะเป็นประโยชน์สำหรับผู้อ่านอย่างแน่นอนและเราหวังว่าจะได้รับความคิดเห็นที่มีค่าของพวกเขาในส่วนความคิดเห็นด้านล่าง