[問題] 測試程式的問題

看板ASM作者 (哈哈哈哈!!!)時間12年前 (2012/01/20 11:06), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
#include <reg51.h> sbit SMOD = 0x87^7; main() { P2=0xff; TMOD=0x20; SMOD=0; /*將SMOD設定為0*/ TH1=0xfd; /*鮑率設定為9600bps */ TR1=1; /*啟動Timer 1*/ SCON=0x50; /*設定為mode 0*/ while(1) /* while迴圈開始*/ { SBUF=P2; /*將指撥開關狀態,放入SBUF*/ while (RI==0); /*檢查是否完成接收?*/ RI=0; /*RI=1時(接收完成),清除RI旗標*/ P0=SBUF; /*將所接收的資料輸出到Port 0*/ TI=0; /*清除TI旗標*/ } /* while迴圈結束*/ } /* 主程式結束 */ 功能是:燒到2個51並測試RX TX的輸入能操控這2個51的PORT 這個程式是我用Keil uVision4-C寫的,我是照書上打的程式碼,可是,編譯時就會不過 錯誤訊息是 rxtx.c(3): error C142: 'SFR': invalid base address rxtx.c(9): error C202: 'SMOD': undefined identifier -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.2.161

01/20 20:42, , 1F
sbit SMOD = 0x87^7; 這行有問題
01/20 20:42, 1F

01/20 20:56, , 2F
不要意思大大剛學不久...請問該如何修改?
01/20 20:56, 2F

01/20 21:06, , 3F
SFR PCON = 0x87;
01/20 21:06, 3F

01/20 21:07, , 4F
sbit SMOD = PCON^7;
01/20 21:07, 4F

01/20 21:09, , 5F
等一下,PCON好像不支援BIT ACCRESS,所以你不能這樣用吧
01/20 21:09, 5F

01/20 21:10, , 6F
請用 PCON &= 0x7F;清除smod,用 PCON |= 0x80; 設定smod
01/20 21:10, 6F
文章代碼(AID): #1F6DeiI- (ASM)