請問直流馬達正反轉程式碼轉換 |
缺席
|
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
1我想問我寫的EM78P156程式轉換問題用12C508A燒錄還是用12C509A好呢? 2這個是裝入手錶內控制微型振動馬達正反運轉時間 3控制時間1分鐘3分鐘後馬達停止 ,, 也可以控制正反轉 , 按一下如附程式一樣問題 ,, 按一下可以控制馬達正反轉變 , 2分鐘內變化正反轉方向 , 便停止 4你們應該看程式便知道我意思 , 不過我想說如上述功能簡化而已 5 你說零件我要找找看 , 不一定恰好有或者離幾個編料號 , 謝謝你感謝你 6({版主大大請幫忙我貼圖 ,, 已經寄到你信箱了謝謝你}) 俊秀
------
俊秀 |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
在下有個疑問ㄟ...
您怎麼會跟會員JOHNNY7,問這麼類似的問題呢?
不同的是,他問細部且分開來問.您是一次問齊... 重申,CPU不同語法不同,I/O也不一樣程式必須重寫!
至於要用508A好還是509A要看你的須求,基本上這兩個很近似
12C508A: Program Memory Size (bytes) 768 RAM Size (bytes) 25 12C509A Program Memory Size (bytes) 1536 RAM Size (bytes) 41只有差在程式記憶體與RAM,看你的須求,不須要太大的話508A就行了
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
|
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
引言: 圖在MYMJ信箱 , 正版主你信箱帳號多少 , {正}版主哪如果用PIC16C505也可以囉 ! 如上述討論功能簡略 , 不過我不會PIC程式碼 ! 寄圖給正 俊秀PIC16C505也可以 你寄這一個吧 q934@ms9.url.com.tw
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
PIC程式碼不會可以學.datasheet裡都有支援的指令說明.
這裡會的人相信應該不少,不懂或有問題再來這裡問.
直接要求程式碼,那你去招標委外case會比較快.這邊po大概沒有人會理你
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
幫貼圖 To 樂天派:
程式碼自己貼吧!敝人只會解"部分"問題,轉碼不會.
Coding更差...
PRODUCT : MOTOR.DT ; ;FUNTION : AUTO MODE & MENUAL MODE ; IF SCAN POWER_ON 0.3S KEYIN GOTO REAL_MODE TIMEING SET 1~15 MIN, ; IF SCAN POWER_ON 0.3S NO_KEYIN GOTO CONTROL_MODE TIMEING SET 1~4 MIN, ; KEY_RUN AUTO_RUN ; KEY_TIME MOTOR_OFF TIME SETUP ; KEY_MFF MENU_MOTOR FF ; KEY_MREEW MENU_MOTOR REW ; ; ;ROCESSOR : EM78P156N ; ;WRITRN BY : W.F.CHIU ; ;DATA : 93/8/10 ; ;CHECKSUM : BADC ; ;CRYSTAL : 4MHZ ; ;CodeOption : OSCILLATOR C R:RC C:CRYSTAL ; WATCHDOG E E:ENABLE D:DISABLE ; CLOCK 4 2:2CLOCK 4:4CLOCK ; PROTECT E E:ENABLE D:DISABLE ; FREQUENCY H L:LOW H:HIGH ; POWER H L:LOW H:HIGH ;---------------------------------------------------------------------- ;System Specific Register definition ;---------------------------------------------------------------------- INDIRCT == 0X00 ;INDIRCT REGISTER TCC == 0X01 ;TIMEER/COUNT PC == 0X02 ;PROGRAM COUNT PSW == 0X03 ;PROGRAM STATUS WODR RSR == 0X04 ;REGISTER SELECT_REGISTER PORT5 == 0X05 ;I/O PORT5 REGISTER PORT6 == 0X06 ;I/O PORT6 REGISTER IOCB == 0X0B ;PULL-DOWN CONTROL REGISTER IOCC == 0X0C ;OPEN-DRAIN CONTROL REGISTER IOCD == 0X0D ;PULL-HIGH CONTROL REGISTER IOCE == 0X0E ;WDT CONTROL REGISTER IOCF == 0X0F ;INTERRUPT MASK REGISTER ISR == 0X0F ;INTERRUPT FLAG ;---------------------------------------------------------------------- ;PSW(STATUS REGISTER) bit definition ;---------------------------------------------------------------------- C == 0X0 ;CARRY/BORROW FLAG DC == 0X1 ;AUXILIARY CARRY/BORROW FLAG Z == 0X2 ;ZERO FLAG PD == 0X3 ;POWER DOWN FLAG TO == 0X4 ;TIME OUT FLAG PA0 == 0X5 ;ROM PAGE 1 PA1 == 0X6 ;ROM PAGE 2 ;---------------------------------------------------------------------- ;PORT5 bit definition ;---------------------------------------------------------------------- MREW == 0X0 ; MFF == 0X1 ; LED_RUN == 0X2 ; LED_STOP == 0X3 ; ;---------------------------------------------------------------------- ;PORT6 bit definition ;---------------------------------------------------------------------- LED_MIN1 == 0X0 ; LED_MIN2 == 0X1 ; LED_MIN3 == 0X2 ; LED_MIN4 == 0X3 ; SW_TIME == 0X4 ; SW_RUN == 0X5 ; SW_MREW == 0X6 ; SW_MFF == 0X7 ; ;---------------------------------------------------------------------- ;ISR bit definition ;---------------------------------------------------------------------- TCIF == 0X0 ;TCC INTERRUPT FLAG 1=ACT ICIF == 0X1 ;I/O CHANGE INTERRUPT FLAG 1=ACT EXIF == 0X2 ;EXI/O INTERRUPT FLAG 1=ACT ;---------------------------------------------------------------------- ;CONT bit definition ;---------------------------------------------------------------------- PSRO == 0X0 ;PRESCALER BITO PSR1 == 0X1 ;PRESCALER BIT1 PSR2 == 0X2 ;PRESCALER BIT2 PAB == 0X3 ;PRESCALER 0=TCC 1=WDT TE == 0X4 ;0=LOW↑HI , 1=HI↓LOW TS == 0X5 ;TCC SIGN SELECT 0=SYS_CLK P54=I/O ,1=EXT_TCC_IN INTE == 0X6 ;INT ENABLE MARK BIT 1=ENABLE ,0=DISABLE ;---------------------------------------------------------------------- ;IOCD (PULL_HIGH CTRL) bit definition ;---------------------------------------------------------------------- PH0 == 0X0 ;P60 0=ENABLE , 1=DISABLE PH1 == 0X1 ;P61 0=ENABLE , 1=DISABLE PH2 == 0X2 ;P62 0=ENABLE , 1=DISABLE PH3 == 0X3 ;P63 0=ENABLE , 1=DISABLE PH4 == 0X4 ;P64 0=ENABLE , 1=DISABLE PH5 == 0X5 ;P65 0=ENABLE , 1=DISABLE PH6 == 0X6 ;P66 0=ENABLE , 1=DISABLE PH7 == 0X7 ;P67 0=ENABLE , 1=DISABLE ;---------------------------------------------------------------------- ;IOCE (WDT CTRL) bit definition ;---------------------------------------------------------------------- ROC == 0X4 ;1=ENABLE , 0=DISABLE EIS == 0X6 ;P60 FUN_SELECT 0=IO , 1=/INT WDTE == 0X7 ;1=ENABLE WDT, 0=DISABLE WDT ;---------------------------------------------------------------------- ;IOCF bit definition ;---------------------------------------------------------------------- TCIE == 0X0 ;TCC INTERRUPT MARK 1=ENABLE 0=DISABLE ICIE == 0X1 ;I/O CHANGE INTERRUPT MARK 1=ENABLE 0=DISABLE EXIE == 0X2 ;EXI/O INTERRUPT MARK 1=ENABLE 0=DISABLE ;---------------------------------------------------------------------- ;System General Register definition ;---------------------------------------------------------------------- STATUSFG == 0X10 ;SYSTEM STATUS_FLAG A_BUF == 0X12 ;SAVE A_VALUE PSW_BUF == 0X13 ;SWVE PSW_VALUE TIME_CNT == 0X14 ; MIN_CNT == 0X15 ; MIN_BUF == 0X16 ; SEC_CNT == 0X17 ; DLY_CNT0 == 0X19 ;FOR DELAY_PRG DLY_CNT1 == 0X1A ;FOR DELAY_PRG DLY_CNT2 == 0X1B ;FOR DELAY_PRG TCC_CNT0 == 0X1C ;FOR TCC_INT_PRG TCC_CNT1 == 0X1D ;FOR TCC_INT_PRG TCC_CNT2 == 0X1E ;FOR TCC_INT_PRG SET_TIME_BUF == 0X1F ; ;---------------------------------------------------------------------- PORT6_BUF == 0X20 ; ;---------------------------------------------------------------------- ;STATUSFG bit definition ;---------------------------------------------------------------------- CTRL_F == 0X0 ;0=CTRL_ON 1=CTRL_OFF MODE_F == 0X1 ;1=AUTO 0=MENU RUN_F == 0X2 ;1=ON 0=OFF MFF_F == 0X3 ;1=ON 0=OFF MREW_F == 0X4 ;1=ON 0=OFF ;---------------------------------------------------------------------- ;SYSTEM_K definition ;---------------------------------------------------------------------- MIN1_K == 0D1 ;1MIN MIN2_K == 0D2 ;2MIN MIN3_K == 0D3 ;3MIN MIN4_K == 0D4 ;5MIN LED_FLASH_K == 0D5 ;5SEC ;================================================================================ ;================================================================================ ORG 0X0 ;POWER_ON RESET ADDRESS JMP START ; ORG 0X08 ;INTERRUPT ADDRESS ORG 0X10 ;PROGRAM ROM START ADDRESS ;================================================================================ AUTO_TIME_TABL: ; ADD PC,A ; RETL 0D1 ;0 RETL 0D2 ;1 RETL 0D3 ;2 RETL 0D4 ;3 ;================================================================================ TIME_TABL: ; ADD PC,A ; RETL 0D15 ;0000 RETL 0D7 ;0001 RETL 0D11 ;0010 RETL 0D3 ;0011 RETL 0D13 ;0100 RETL 0D5 ;0101 RETL 0D9 ;0110 RETL 0D1 ;0111 RETL 0D14 ;1000 RETL 0D6 ;1001 RETL 0D10 ;1010 RETL 0D2 ;1011 RETL 0D12 ;1100 RETL 0D4 ;1101 RETL 0D8 ;1110 ;================================================================================ ;================================================================================ ;DELAY PROGRAM ;================================================================================ DLY_01S: ;100MS*1 MOV A,@0D1 ; DLY_01X: ;100MS*X MOV DLY_CNT0,A ; ;---------------------------------------------------------------------- DLY_LP0: ; MOV A,@0D100 ;1MS*100=100MS MOV DLY_CNT1,A ; ;---------------------------------------------------------------------- DLY_LP1: ; MOV A,@0D250 ;4US*250=1MS MOV DLY_CNT2,A ; ;---------------------------------------------------------------------- DLY_LP2: ; WDTC ;1US DJZ DLY_CNT2 ;1US JMP DLY_LP2 ;1US DJZ DLY_CNT1 ;1US JMP DLY_LP1 ;1US DJZ DLY_CNT0 ;1US JMP DLY_LP0 ;1US RETL 0X0 ;2US ;================================================================================ SCAN_SW: WDTC ;1US JBS PORT6,SW_RUN ; JMP RUN_PRG ; JBS PORT6,SW_TIME ; JMP SET_TIME_PRG ; JBS PORT6,SW_MFF ; JMP MFF_PRG ; JBS PORT6,SW_MREW ; JMP MREW_PRG ; RETL 0X0 ; ;---------------------------------------------------------------------- RUN_PRG: ; JBC STATUSFG,MFF_F ; RETL 0X0 ; JBC STATUSFG,MREW_F ; RETL 0X0 ; BS STATUSFG,RUN_F ; BS STATUSFG,MODE_F ;SET AUTO MODE RETL 0X0 ; ;---------------------------------------------------------------------- SET_TIME_PRG: ; BC STATUSFG,MODE_F ; BC STATUSFG,MFF_F ; BC STATUSFG,MREW_F ; CALL OFF_ALLLED ; BS PORT5,LED_STOP ; JBS STATUSFG,RUN_F ; JMP SETUP_TIME_SPRG0 ; CLR SET_TIME_BUF ; JMP SETUP_TIME_SPRG1 ; ;---------------------------------------------------------------------- SETUP_TIME_SPRG0: ; INC SET_TIME_BUF ; JBC SET_TIME_BUF,2 ; CLR SET_TIME_BUF ; ;---------------------------------------------------------------------- SETUP_TIME_SPRG1: ; JBC SET_TIME_BUF,1 ; JMP SET_TIME_LP0 ; JBS SET_TIME_BUF,0 ; BS PORT6,LED_MIN1 ; JBC SET_TIME_BUF,0 ; BS PORT6,LED_MIN2 ; JMP CHK_OPEN_SW_TIME ; ;---------------------------------------------------------------------- SET_TIME_LP0: ; JBS SET_TIME_BUF,0 ; BS PORT6,LED_MIN3 ; JBC SET_TIME_BUF,0 ; BS PORT6,LED_MIN4 ; JMP CHK_OPEN_SW_TIME ; ;---------------------------------------------------------------------- CHK_OPEN_SW_TIME: ; BC STATUSFG,RUN_F ; CALL DLY_01S ; JBS PORT6,SW_TIME ; JMP CHK_OPEN_SW_TIME ; RETL 0X0 ; ;---------------------------------------------------------------------- MFF_PRG: ; JBC STATUSFG,MODE_F ;CHK MENU MODE RETL 0X0 ; BS STATUSFG,RUN_F ; BC STATUSFG,MODE_F ; BS STATUSFG,MFF_F ; BC STATUSFG,MREW_F ; RETL 0X0 ; ;---------------------------------------------------------------------- MREW_PRG: ; JBC STATUSFG,MODE_F ;CHK MENU MODE RETL 0X0 ; BS STATUSFG,RUN_F ; BC STATUSFG,MODE_F ; BC STATUSFG,MFF_F ; BS STATUSFG,MREW_F ; RETL 0X0 ; ;================================================================================ OFF_ALLLED: CLR PORT5 ; CLR PORT6 ; RETL 0X0 ; ;================================================================================ ;SYSTEM INIT_PRG ;================================================================================ INIT: ; WDTC ; DISI ; MOV A,@0B00001111 ;PRESCALER FOR WTD CONTW ; MOV A,@0B00001111 ;P64~P67 PULL HIGH IOW IOCD ; MOV A,@0B10000000 ;ENABLE WTD IOW IOCE ; MOV A,@0B00000000 ;interrupt DISABLE IOW IOCF ; MOV A,@0B11110000 ;SET PPRT5=OUTPUT FOR LED IOW PORT5 ; MOV PORT5,A ;CLR LED MOV A,@0B11110000 ; IOW PORT6 ; MOV PORT6,A ;POWER ON LATCH CLR TCC ; CLR ISR ; RETL 0X0 ; ;================================================================================ ;================================================================================ ;PROGRAM START ;================================================================================ ;================================================================================ START: ; CALL INIT ;SYSTEM INIT CLR STATUSFG ; MOV A,@0D3 ; MOV TIME_CNT,A ; OPEN_TEST: ;POWER_ON CHECK MODE CALL DLY_01S ; JBS PORT6,SW_MFF ; BS STATUSFG,CTRL_F ; JBS PORT6,SW_MREW ; BS STATUSFG,CTRL_F ; JBS PORT6,SW_TIME ; BS STATUSFG,CTRL_F ; JBS PORT6,SW_RUN ; BS STATUSFG,CTRL_F ; DJZ TIME_CNT ; JMP OPEN_TEST ; JBS STATUSFG,CTRL_F ; JMP CONTROL_PRG ; ;================================================================================ ;================================================================================ REAL_PRG: ; MOV A,PORT6 ;READ I/0 SETUP TIME MOV PORT6_BUF,A ; CALL OFF_ALLLED ;CLR I/O SWAP PORT6_BUF ; MOV A,@0B00001111 ; AND PORT6_BUF,A ; JBC PSW,Z ; JMP CONTROL_PRG ; MOV A,PORT6_BUF ; CALL TIME_TABL ; MOV SET_TIME_BUF,A ; BS PORT5,MREW ; BC PORT5,MFF ; ;---------------------------------------------------------------------- CHANGE_IO: ; MOV A,SET_TIME_BUF ;UPDATE MIN_CNT MOV MIN_CNT,A ; MOV A,@0B00000011 ;CHANGE I/O XOR PORT5,A ; SET_TIME_LP: ; MOV A,@0D60 ;SETUP 60S' MOV SEC_CNT,A ; MIN_LP: ; BS PORT5,LED_RUN ; MOV A,@0D5 ; CALL DLY_01X ; BC PORT5,LED_RUN ; MOV A,@0D5 ; CALL DLY_01X ; DJZ SEC_CNT ; JMP MIN_LP ; DJZ MIN_CNT ; JMP SET_TIME_LP ; JMP CHANGE_IO ; ;================================================================================ ;================================================================================ CONTROL_PRG: ; CLR STATUSFG ; CLR SET_TIME_BUF ; CALL OFF_ALLLED ; BS PORT6,LED_MIN1 ; MAIN: BS PORT5,LED_STOP ; CALL DLY_01S : CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP MAIN ; JBS STATUSFG,MODE_F ; JMP MENU_PRG ; JMP AUTO_PRG ; ;---------------------------------------------------------------------- MENU_PRG: JBS STATUSFG,MFF_F ; JMP MOTOR_REW_PRG : MOTOR_FF_PRG: ; CALL OFF_ALLLED ; BC PORT5,MREW ; BS PORT5,MFF ; MOV A,@0D5 ; MOV TIME_CNT,A ; BS PORT5,LED_RUN ; MOTOR_FF_LP0: CALL DLY_01S ; CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP CONTROL_PRG ; JBC STATUSFG,MREW_F ; JMP MOTOR_REW_PRG ; DJZ TIME_CNT ; JMP MOTOR_FF_LP0 ; MOV A,@0D5 ; MOV TIME_CNT,A ; BC PORT5,LED_RUN ; MOTOR_FF_LP1: CALL DLY_01S ; CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP CONTROL_PRG ; JBC STATUSFG,MREW_F ; JMP MOTOR_REW_PRG ; DJZ TIME_CNT ; JMP MOTOR_FF_LP1 ; JMP MOTOR_FF_PRG ; ;---------------------------------------------------------------------- MOTOR_REW_PRG: ; CALL OFF_ALLLED ; BS PORT5,MREW ; BC PORT5,MFF ; MOV A,@0D5 ; MOV TIME_CNT,A ; BS PORT5,LED_RUN ; MOTOR_REW_LP0: CALL DLY_01S ; CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP CONTROL_PRG ; JBC STATUSFG,MFF_F ; JMP MOTOR_FF_PRG ; DJZ TIME_CNT ; JMP MOTOR_REW_LP0 ; MOV A,@0D5 ; MOV TIME_CNT,A ; BC PORT5,LED_RUN ; MOTOR_REW_LP1: CALL DLY_01S ; CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP CONTROL_PRG ; JBC STATUSFG,MFF_F ; JMP MOTOR_FF_PRG ; DJZ TIME_CNT ; JMP MOTOR_REW_LP1 ; JMP MOTOR_REW_PRG ; ;---------------------------------------------------------------------- AUTO_PRG: BS PORT5,MREW ; BC PORT5,MFF ; ;---------------------------------------------------------------------- AUTO_CHANGE_IO: ; BC PORT5,LED_STOP ; MOV A,SET_TIME_BUF ;UPDATE MIN_CNT CALL AUTO_TIME_TABL ; MOV MIN_CNT,A ; MOV A,@0B00000011 ;CHANGE I/O XOR PORT5,A ; SEC_60S_LP: ; MOV A,@0D60 ;SETUP 60S' MOV SEC_CNT,A ; HSEC_LP0: ; BS PORT5,LED_RUN ; MOV A,@0D5 ; MOV TIME_CNT,A ; HSEC_LP1: ; CALL DLY_01S ; CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP CONTROL_PRG ; DJZ TIME_CNT ; JMP HSEC_LP1 ; BC PORT5,LED_RUN ; MOV A,@0D5 ; MOV TIME_CNT,A ; HSEC_LP2: ; CALL DLY_01S ; CALL SCAN_SW ; JBS STATUSFG,RUN_F ; JMP CONTROL_PRG ; DJZ TIME_CNT ; JMP HSEC_LP2 ; DJZ SEC_CNT ; JMP HSEC_LP0 ; DJZ MIN_CNT ; JMP SEC_60S_LP ; JMP AUTO_CHANGE_IO ; ;---------------------------------------------------------------------- END發表人 - mymj 於 2005/04/17 00:41:35
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
引言: 我之前聽mymj大大所提建議病人通訊警報手錶 ,,這要用PIC16F84A這顆來燒錄程式碼 ,, 程式碼已經寫好了不過不熟悉運作方式 ,, 也限於PIC16F84A這顆太大了 ,, 無法裝入小手錶內 俊秀PIC16F84A這顆會寫,其他的就會寫.都很相近. 稍微看一下就好了.燒錄就要上microchip查看看可透過那些方式 如果你是公司可找microchip support給你 個人只有買囉...或是去學校用
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
|
樂天派
一般會員 發表:10 回覆:26 積分:7 註冊:2005-04-12 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
你還須要反組譯程式嗎?這已經是程式最原始的型式了. 你說這是你的作品,那你應該很了解原理.看一下PIC16C505的Datasheet
熟悉一下指令,寫這個根本不用3天.保守一點,一星期就ok.
我看過你的檔案的詳細資料了,這真的是你的作品嗎< >< >
真要我說出來嗎?
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |