截屏2023-01-17 14.49.41.png (185.03 KB, 下載次數: 27)
下載附件
2023-1-17 14:49 上傳
問題是這樣的,我在學習51單片機的時候看到老師講了模塊化,所以自己寫了一個,然后結構圖在上面
- #include <8052.h>
- #include "../Sleep.h"
- #include "../nixie.h"
- void main() {
- // P2_4=0;
- // P2_3=0;
- // P2_2=1;
- P2 = 0x00;
-
- while (1) {
- Nixie(1, 4);
- Nixie(2, 6);
- // Sleep(3);
- // P2_2 = 0;
- }
- }
復制代碼 在寫完這個代碼之后使用sdcc main.c發出警告
- qin@QindeMacBook-Pro 08 動態數碼管顯示 % sdcc main.c
- ?ASlink-Warning-Undefined Global '_Nixie' referenced by module 'main'
- ?ASlink-Warning-Undefined Global '_Nixie_PARM_2' referenced by module 'main'
復制代碼
但還是可以生成文件的,然后使用stcgal -P stc89 -p /dev/tty.wchusbserial11140 main.ihx
編譯后,未能實現正常效果
以下為用到的文件
nixie.c
- #include "nixie.h"
- #include <8052.h>
- char num[18] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00};
- void Nixie(unsigned char weizhi, unsigned char number) {
- switch (weizhi)
- {
- case 1:
- P2_4=1;P2_3=1;P2_2=1;
- break;
- case 2:
- P2_4=1;P2_3=1;P2_2=0;
- break;
- case 3:
- P2_4=1;P2_3=0;P2_2=1;
- break;
- case 4:
- P2_4=1;P2_3=0;P2_2=0;
- break;
- case 5:
- P2_4=0;P2_3=1;P2_2=1;
- break;
- case 6:
- P2_4=0;P2_3=1;P2_2=0;
- break;
- case 7:
- P2_4=0;P2_3=0;P2_2=1;
- break;
- case 8:
- P2_4=0;P2_3=0;P2_2=0;
- break;
- default:
- break;
- }
-
- switch (number)
- {
- case 0:
- P0=num[0];
- break;
- case 1:
- P0=num[1];
- break;
- case 2:
- P0=num[2];
- break;
- case 3:
- P0=num[3];
- break;
- case 4:
- P0=num[4];
- break;
- case 5:
- P0=num[5];
- break;
- case 6:
- P0=num[6];
- break;
- case 7:
- P0=num[7];
- break;
- case 8:
- P0=num[8];
- break;
- case 9:
- P0=num[9];
- break;
- case 'A':
- P0=num[10];
- break;
- case 'B':
- P0=num[11];
- break;
- case 'C':
- P0=num[12];
- break;
- case 'D':
- P0=num[13];
- break;
- case 'E':
- P0=num[14];
- break;
- case 'F':
- P0=num[15];
- case ' ':
- P0=num[16];
- default:
- break;
- }
- Sleep(2);
- P0 = 0x00;
- }
復制代碼
nixie.h
- #ifndef __NIXIE_H__
- #define __NIXIE_H__
- void Nixie(unsigned char weizhi, unsigned char number);
- #endif
復制代碼
Sleep.c- void Sleep(unsigned int xms)
- {
- unsigned char i, j;
- while (xms)
- {
- i = 2;
- j = 199;
- do {
- while (--j);
- } while(--i);
- xms--;
- }
- // _nop_();
- }
復制代碼
Sleep.h
- #ifndef __SLEEP_H__
- #define __SLEEP_H_
- void Sleep(unsigned int xms);
- #endif
復制代碼
系統是Macos,在這里請教一下各位大佬
|