ฉันมีPIC18F46K22และตั้งโปรแกรมด้วยคอมไพเลอร์ XC8 ในท้ายที่สุดผมจะมีระบบเช่นเครื่องคอมพิวเตอร์ด้วยและstdin
stdout
ดังนั้นในลูปหลักจะมีฟังก์ชันที่ตรวจสอบว่ามีอินพุตใหม่หรือไม่ หากมีการป้อนข้อมูลฟังก์ชั่นจะถูกเรียกตาม ตัวอย่างเช่นเมื่อฉันป้อน A บนstdin
PIC จะเรียกใช้ฟังก์ชันเช่นfunction_A
แทนที่จะfunction_B
เรียกว่าเมื่อฉันป้อน a
เมื่อ PIC เสร็จสิ้นด้วยฟังก์ชั่นฉันต้องการให้อินพุตใหม่ถูกส่งไปยังฟังก์ชั่น ดังนั้นเมื่อกด A จะเปิดตัวส่งสัญญาณ RS232 จากช่วงเวลานั้นทุกอินพุตจะถูกส่งผ่าน RS232 ในที่สุดโครงการนี้เป็นโปรแกรมแก้ไขข้อความแบบสแตนด์อโลน ดังนั้นเมื่อกด A จะเป็นการเปิดระบบไฟล์จากช่วงเวลานั้นคุณจะไม่แก้ไขข้อความอีกต่อไป แต่ลองดูรายการไฟล์ต่างๆ นั่นหมายความว่าการกดขึ้นและลงหมายถึงสิ่งที่แตกต่างจากในสภาพแวดล้อมการแก้ไขข้อความ
ฉันได้คิดมากเกี่ยวกับวิธีการเขียนโปรแกรมใน C. ฉันคิดว่าเมื่อคืนนี้และอยากจะรู้ว่าเป็นไปได้หรือไม่และถ้าเป็นเช่นนั้น สิ่งที่ฉันต้องการจะทำคือ:
main
เรียกฟังก์ชันการทำงานเช่นfunction_A
function_A
เปลี่ยนตัวแปรโกลบอลfunction_addr
เป็นตัวชี้แอดเดรสของฟังก์ชันin_function_A
- จากช่วงเวลานั้น
main
เรียกใช้ฟังก์ชันfunction_addr
เมื่อมีอินพุตใหม่
สิ่งที่ฉันต้องการคือmain
ฟังก์ชั่นที่ตรวจสอบว่าfunction_addr
เป็นศูนย์หรือไม่ ถ้ามันเป็นฟังก์ชั่น 'ปกติ' function_A
ควรจะเรียกว่าเหมือน ถ้าไม่ใช่ฟังก์ชันที่function_addr
ควรจะถูกเรียก ฉันยังต้องfunction_A
ซึ่งการเปลี่ยนแปลงที่จะชี้ไปยังfunction_addr
in_function_A
หมายเหตุ: เมื่อควรปิดฟังก์ชั่นระบบแฟ้มis_function_A
ควรเปลี่ยนfunction_addr
เป็น 0
ดังนั้นโดยทั่วไปคำถามของฉันคือฉันจะทำอย่างไร
- รับที่อยู่ของฟังก์ชั่น (และเก็บไว้ในตัวแปร)
- เรียกใช้ฟังก์ชันตามที่อยู่ที่ระบุ