• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (genius)




{問題}燒錄器 電腦抓不到
#1
新會員
新會員


使用這款 >>PICSTART PLUS<<

連接頭為 RS232 (9 腳)

筆記型電腦為 COM (25 腳)

請問 需須 特別的 驅動程式嗎??

發表於: 2006/5/31 21:06
頂部


Re: 用 16F877 輸出 PWM + LCD 顯示
#2
新會員
新會員


恩...
我的設計是LCD 相關程式都放在 BANK1 裡面

處理PWM 在 BANK0 裡

中斷程式 是在 BANK0 中執行

沒有中斷時 因該一直在 BANK 1中執行

所以在 PUSH 中

有清除 STATUS,RP0、RP1 是要使用 BANK0 的暫存器

有 PCLATH 是要告速它 要去BANK 0 執行程式 因為程式位址 在BANK0中

-------------------------------------------------------------

相對的 POP 中

PCLATH 因該是多的
-------------------------------------------------------------------
剛剛用你的說法以DEBUGGER>> MPLAB SIM 測試

還是會卡在 LINE1_4 查表中 *__*

------------------------------------------------------------------

發表於: 2006/4/19 23:52
頂部


Re: 用 16F877 輸出 PWM + LCD 顯示
#3
新會員
新會員


;lcd 輸出資料
;-------------------------------------------------------

LIST P=16F877, R=DEC
INCLUDE <P16F877.INC>

ORG 0X1A00

;-----LINE---DATA---------------------
LINE1_4:
MOVF TEMP_LINE,W
ADDWF PCL,F
RETLW 0X80 ;1000 0000
RETLW 0XC0 ;1100 0000
RETLW 0X94 ;1001 0100
RETLW 0XD4 ;1101 0100
DT "#"
;-----CHAR----DATA--------------------
T_CHAR:
MOVF TEMP_REG,W
ADDWF PCL,F
RETLW 0X38 ;1000 0000
RETLW 0X0D ;1100 0000
RETLW 0X06 ;1001 0100
RETLW 0X01 ;1101 0100
DT "#"
DT "Kun Shan University#"
DT "Vo: Io: #"
DT "Fo: sin 256 D#"
DT "DC 30 v >>> AC 60 v#

發表於: 2006/4/19 18:27
頂部


Re: 用 16F877 輸出 PWM + LCD 顯示
#4
新會員
新會員


;SIN波表
;----------------------------------------------------


LIST P=16F877, R=DEC
INCLUDE <P16F877.INC>

ORG 0X1200

SIN_TABLE:
ADDWF PCL ;PCL+=W

RETLW 1
RETLW 1
RETLW 1
RETLW 1
RETLW 1
RETLW 2
RETLW 2
RETLW 2
RETLW 3
RETLW 3
RETLW 3
RETLW 4
RETLW 4
RETLW 5
RETLW 6
RETLW 6
RETLW 7
RETLW 8
RETLW 9
RETLW 10
RETLW 11
RETLW 11
RETLW 12
RETLW 13
RETLW 15
RETLW 16
RETLW 17
RETLW 18
RETLW 19
RETLW 21
RETLW 22
RETLW 23
RETLW 25
RETLW 26
RETLW 27
RETLW 29
RETLW 30
RETLW 32
RETLW 34
RETLW 35
RETLW 37
RETLW 38
RETLW 40
RETLW 42
RETLW 44
RETLW 45
RETLW 47
RETLW 49
RETLW 51
RETLW 53
RETLW 54
RETLW 56
RETLW 58
RETLW 60
RETLW 62
RETLW 64
RETLW 66
RETLW 68
RETLW 70
RETLW 72
RETLW 74
RETLW 76
RETLW 78
RETLW 80
RETLW 82
RETLW 83
RETLW 85
RETLW 87
RETLW 89
RETLW 91
RETLW 93
RETLW 95
RETLW 97
RETLW 99
RETLW 101
RETLW 103
RETLW 105
RETLW 107
RETLW 109
RETLW 110
RETLW 114
RETLW 116
RETLW 118
RETLW 119
RETLW 121
RETLW 123
RETLW 125
RETLW 126
RETLW 128
RETLW 129
RETLW 131
RETLW 133
RETLW 134
RETLW 136
RETLW 137
RETLW 138
RETLW 140
RETLW 141
RETLW 142
RETLW 144
RETLW 145
RETLW 146
RETLW 147
RETLW 148
RETLW 150
RETLW 151
RETLW 152
RETLW 152
RETLW 153
RETLW 154
RETLW 155
RETLW 156
RETLW 157
RETLW 157
RETLW 158
RETLW 159
RETLW 159
RETLW 160
RETLW 160
RETLW 160
RETLW 161
RETLW 161
RETLW 161
RETLW 162
RETLW 162
RETLW 162
RETLW 162
RETLW 162

發表於: 2006/4/19 18:25
頂部


Re: 用 16F877 輸出 PWM + LCD 顯示
#5
新會員
新會員


主程式

;-------------------------------------------------------


;PORTD -> B'E RW RS 0 0000'

LIST P=16F877, R=DEC
#INCLUDE P16F877.INC
;----------暫存器放至位址---------------------------
CBLOCK 0X20
W_BAK
STATUS_BAK
PCLATH_BAK
SIN_T
SIN_INDEX ;查表指標
V_AD
I_AD
T1S
ENDC

CBLOCK 0X0A0
VAD
IAD
V_OUT
I_OUT
F_OUT
LCD_INT
TEMP_REG
TEMP_CHAR
TEMP_LINE
HURD_REG
TEN_REG
ONE_REG
ENDC

;------LCD---設定-------------------
LCD_SET MACRO
BCF STATUS,RP0 ;BANK0
MOVLW 0X80 ;B'1000 0000'
MOVWF PORTD
NOP
NOP
NOP
MOVLW 0X00 ;B'0000 0000'
MOVWF PORTD
BSF STATUS,RP0 ;BANK1
ENDM

;------LCD---送字-------------------
LCD_SEND MACRO
BCF STATUS,RP0 ;BANK0
MOVLW 0XA0 ;B'1010 0000'
MOVWF PORTD
NOP
NOP
NOP
MOVLW 0X00 ;B'0000 0000'
MOVWF PORTD
BSF STATUS,RP0 ;BANK1
ENDM

;-------起始設定----------------------------
ORG 0
GOTO INITIAL
;--------中斷-----------------------------------
ORG 4
PUSH: ;儲存目前狀態
MOVWF W_BAK
BCF STATUS,RP0
BCF STATUS,RP1
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_BAK
MOVF PCLATH,W
MOVWF PCLATH_BAK
BCF PCLATH,3
BCF PCLATH,4
BCF PCLATH,1

BTFSC PIR1,TMR2IF
GOTO PWM_OUT

BTFSC PIR1,ADIF
GOTO AD_CONT

BTFSC PIR1,TMR1IF
GOTO CHECK_SIN
POP: ;回覆之前的狀態
BSF PCLATH,3
BCF PCLATH,4
BSF PCLATH,1
MOVF PCLATH_BAK,W
MOVWF PCLATH
SWAPF STATUS_BAK,W
MOVWF STATUS
SWAPF W_BAK,F
MOVF W_BAK,W ;還原暫存器之數值
RETFIE ;回覆中斷發生

;----------PIC設定---------------------------
INITIAL:
BCF STATUS,RP0 ;BANK0
BCF STATUS,RP1
BSF INTCON,PEIE
BSF INTCON,GIE ;中斷控制
MOVLW 0XE0 ;E1 ;設定49999*100
MOVWF TMR1L
MOVLW 0X0B ;3C
MOVWF TMR1H
MOVLW B'00110000' ; TIMER1預除器為 1:8
MOVWF T1CON
MOVLW B'00001000' ; TIMER2預除器為 1:2
MOVWF T2CON
MOVLW B'00000001'
MOVWF CCPR2L
MOVLW B'00001111' ; CCP2 為 PWM模式
MOVWF CCP2CON
MOVLW B'10001001'
MOVWF ADCON0 ;設AD暫存器
;------------------------------------------------
BSF STATUS,RP0 ;BANK1
MOVLW B'00000110' ;設定TMR0為1:128
MOVWF OPTION_REG
MOVLW B'00000011' ;設定PORTA、B、C、D的接腳用途
MOVWF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
BSF PIE1,TMR2IE ;啟動 TIME 2 中斷
BSF PIE1,TMR1IE ;啟動 TIME 1 中斷
BSF PIE1,ADIE ;啟動 AD 中斷
MOVLW 162 ;PR2設為162-->>約15Khz
MOVWF PR2
MOVLW B'00000100'
MOVWF ADCON1
;------------暫存器--內容--設定---------------------
MOVLW .3
MOVWF LCD_INT
CLRF VAD
CLRF IAD
CLRF TEMP_REG
CLRF TEMP_CHAR
CLRF TEMP_LINE

BCF STATUS,RP0 ;BANK0
MOVLW .10
MOVWF T1S
MOVLW 0X01
MOVWF SIN_T
CLRF SIN_INDEX
CLRF V_AD
CLRF I_AD
CLRF TMR0
;----------設定結束---------------------------
BSF PCLATH,3
BCF PCLATH,4
BSF PCLATH,1
GOTO LCD_INITIAL

;-------BANK---0---------------------------------------
CHECK_SIN:
BCF PIR1,TMR1IF
MOVLW 0XE0 ;E1 ;設定49999*100
MOVWF TMR1L
MOVLW 0X0B ;0X3C
MOVWF TMR1H
DECFSZ T1S
GOTO POP
MOVLW .10
MOVWF T1S

MOVF SIN_T,W ;讀取頻率
BSF STATUS,RP0
MOVWF F_OUT
BCF STATUS,RP0
MOVLW 0X01 ;頻率清除
MOVWF SIN_T
MOVF VAD,W ;讀取電壓
BSF STATUS,RP0
MOVWF V_OUT
BCF STATUS,RP0
MOVF IAD,W ;讀取電流
BSF STATUS,RP0
MOVWF I_OUT
BCF STATUS,RP0
CLRF VAD ;清除電壓
CLRF IAD ;清除電流
GOTO POP

PWM_OUT: ;計算輸出修正
MOVF SIN_INDEX,W
BSF PCLATH,4
BCF PCLATH,3
BSF PCLATH,1
CALL SIN_TABLE ;查表
BCF PCLATH,4
BCF PCLATH,1
MOVWF CCPR2L ;儲存查表結果
BSF ADCON0,GO
BCF PIR1,TMR2IF
GOTO POP

AD_CONT: ;AD轉換判定
BTFSS ADCON0,CHS0
GOTO AD_I
AD_V: ;電壓回授轉換
BCF PIR1,ADIF
BCF ADCON0,CHS0
MOVF ADRESH,W
MOVWF V_AD
SUBWF CCPR2L,1
BSF ADCON0,GO
SUBWF VAD,TEMP_REG
BTFSC STATUS,C
GOTO SIN_PWM
BSF STATUS,RP0
MOVF V_AD,W
MOVWF VAD
BCF STATUS,RP0
SIN_PWM:
BTFSC SIN_T,7
GOTO SIN_DEC
SIN_INC:
INCF SIN_INDEX,F ;累計查表次數加一
BTFSC SIN_INDEX,7
BSF SIN_T,7 ;= 128 執行 PWM 下降
GOTO POP ;X 128 離開中斷 等待下次遞增
SIN_DEC:
DECFSZ SIN_INDEX,F ;累計查表次數加一
GOTO POP ;X 0 離開中斷 等待下次遞減
INCF SIN_T
BCF SIN_T,7 ;= 0 執行 PWM 上升
GOTO POP
AD_I: ;電流回授轉換
BCF PIR1,ADIF
BSF ADCON0,CHS0
MOVF ADRESH,W
MOVWF I_AD
SUBWF CCPR2L,1

SUBWF IAD,TEMP_REG
BTFSC STATUS,C
GOTO POP
MOVF I_AD,W
BSF STATUS,RP0
MOVWF IAD
BCF STATUS,RP0
GOTO POP


;-------BANK--1-----------------------------------------

ORG 0XB00

LCD_INITIAL:
CALL CHECK_4MS
CALL LCD_BF
MOVLW 0X30
BCF STATUS,RP0
MOVWF PORTB
MOVLW 0X20
MOVWF PORTB
NOP
NOP
MOVLW 0X00
MOVWF PORTD
BSF STATUS,RP0
CALL DELAY_4MS
DECFSZ LCD_INT,F
GOTO LCD_INITIAL
CLRF TEMP_LINE
CLRF TEMP_REG
GOTO LCD_LX_CHAR
LCD_L:
BSF PCLATH,4
BSF PCLATH,3
BSF PCLATH,1
CALL LINE1_4
BCF PCLATH,4
BSF PCLATH,3
BCF PCLATH,1
BCF STATUS,RP0
MOVWF PORTB
BSF STATUS,RP0
INCF TEMP_LINE,F
BCF STATUS,Z
SUBLW '#' ;確認是否結束
BTFSC STATUS,Z
GOTO LCD_END
CALL CHECK_4MS
LCD_SET
CALL DELAY_4MS

LCD_LX_CHAR:
BSF PCLATH,4
BSF PCLATH,3
BSF PCLATH,1
CALL T_CHAR
BCF PCLATH,4
BSF PCLATH,3
BCF PCLATH,1
BCF STATUS,RP0
MOVWF PORTB
BSF STATUS,RP0
INCF TEMP_REG,F
BCF STATUS,Z
SUBLW '#' ;確認是否結束
BTFSC STATUS,Z
GOTO LCD_L
CALL CHECK_4MS
LCD_SEND
CALL DELAY_4MS
GOTO LCD_LX_CHAR

;------LCD---BF---檢查--------------
LCD_BF:
BCF STATUS,RP0
CLRF PORTB
BSF STATUS,RP0
MOVLW 0XFF
MOVWF TRISB
BCF STATUS,RP0
BCF PORTD,5
BSF PORTD,6
RECHECK:
BSF PORTD,7
NOP
BCF PORTD,7
MOVWF PORTB
BTFSC PORTB,7
GOTO RECHECK
BSF STATUS,RP0
CLRF TRISB
RETURN

LCD_END:
BCF STATUS,RP0
BCF STATUS,RP1
BSF T1CON,TMR1ON
BSF T2CON,TMR2ON

CHANG16TO10:
MOVF VAD
MOVWF TEMP_REG
MOVLW 0XC4
MOVWF TEMP_LINE
CALL DIVISION
MOVF IAD
MOVWF TEMP_REG
MOVLW 0XCE
MOVWF TEMP_LINE
CALL DIVISION
MOVF F_OUT
MOVWF TEMP_REG
MOVLW 0X98
MOVWF TEMP_LINE
CALL DIVISION
GOTO CHANG16TO10

DIVISION: ;16轉10進制
CLRF HURD_REG
CLRF TEN_REG
CLRF ONE_REG

MOVLW 0X0A
SUBWF TEMP_REG,W
BTFSS STATUS,C
MOVF TEMP_REG,W
BTFSS STATUS,C
MOVWF ONE_REG
BTFSS STATUS,C
GOTO DISPLAY
TENLOOP:
MOVLW 0X0A
SUBWF TEMP_REG,F
INCF TEMP_REG,F
MOVLW 0X0A
SUBWF TEMP_REG,W
BTFSS STATUS,C
MOVF TEMP_REG,W
BTFSS STATUS,C
MOVWF ONE_REG
BTFSC STATUS,C
GOTO TENLOOP
MOVLW 0X0A
SUBWF TEN_REG,W
BTFSS STATUS,C
GOTO DISPLAY
HURDLOOP:
MOVLW 0X0A
SUBWF TEN_REG,F
INCF HURD_REG,F
MOVLW 0X0A
SUBWF TEN_REG,W
BTFSS STATUS,C
GOTO HURDLOOP

DISPLAY: ;輸出轉換結果
MOVLW 0X01
SUBWF HURD_REG,W
BTFSS STATUS,C
GOTO TEN_LOOP
MOVF TEMP_LINE,W
MOVWF PORTB
CALL CHECK_4MS
LCD_SET
CALL DELAY_4MS
MOVLW 0X30
ADDWF HURD_REG,W
CALL SENDCHAR
TEN_LOOP:
MOVLW 0X01
SUBWF TEN_REG,W
BTFSS STATUS,C
GOTO ONE_LOOP
MOVLW 0X30
ADDWF TEN_REG,W
CALL SENDCHAR
ONE_LOOP:
MOVLW 0X30
ADDWF ONE_REG,W
SENDCHAR:
BCF STATUS,RP0;BANK0
MOVWF PORTB
CALL CHECK_4MS
LCD_SEND
CALL DELAY_4MS
RETURN
;-----延遲---4MS---------------------
DELAY_4MS:
BCF STATUS,RP0
CLRF TMR0 ;OPTION_REG
BSF STATUS,RP0
RETURN
CHECK_4MS:
BTFSS INTCON,T0IF
GOTO CHECK_4MS
BCF INTCON,T0IF
RETURN

#INCLUDE<LCD_TEXT.INC>;單晶片基礎設定檔

#INCLUDE<SIN_256.INC>;單晶片基礎設定檔

END

發表於: 2006/4/19 18:23
頂部


用 16F877 輸出 PWM + LCD 顯示
#6
新會員
新會員


請大家幫我看一下

我自己已經除錯過了 程式也會跑

可是沒有東西輸出

請 高手們 幫我看看程式哪還有錯

我使用DEBUGGER>> MPLAB SIM 測試

會卡在 LINE1_4的查表中
------------------------
時脈 >> 20M 20P
ccp2 >> PWM
PORTA >> 0腳 電流回授
PORTA >> 1腳 電壓回授
PORTB >> LCD 資料
PORTD >> LCD 控制
-------------------------

發表於: 2006/4/19 18:21
頂部






:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------