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


Browsing this Thread:   1 Anonymous Users






Re: 版主及各位大大請教16F877配合SIM100C傳輸問題
#4
版主
版主


查看用戶資訊
你在接收中斷程式裡呼叫 LCD 顯示副程式會不會造成Over Run 的問題?

發表於: 2006/9/7 15:09
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 版主及各位大大請教16F877配合SIM100C傳輸問題
#3
新會員
新會員


查看用戶資訊
謝謝大大的回覆~~~小弟是從LCM測試無誤接下來再作配合SIM100C,由PIC傳給SIM100C模組的部份功能正常,可以撥出PIC設定的號碼~~但是接收的部分就出現亂碼,也就是因為卡在傳送的地方沒問題但接收卻都不如預期而不知該怎麼辦!不知道是程式問題還是???希望各位大大能幫幫忙!程式後段式副檔<LCD.INC>這部份應該沒問題!

發表於: 2006/9/7 11:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 版主及各位大大請教16F877配合SIM100C傳輸問題
#2
版主
版主


查看用戶資訊
程式太常無法幫你用看的來找Bug,建議先檢查RS-232收發的訊息市府有錯,LCD 顯示程式單獨測試時功能是否正常,把問題分類後依依測試,建議不要一次寫完後再測試。

發表於: 2006/9/7 9:59
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


版主及各位大大請教16F877配合SIM100C傳輸問題
#1
新會員
新會員


查看用戶資訊
小弟用PIC16F877的RS232<RX.TX>與SIM100C模組做傳輸,目的是要接收SIM100C模組的回傳值<字串>並顯示於LCM上,電路部份已經無任何問題也可以撥出設定號碼,但是在顯示SIM100C的傳回值卻都是亂碼LCM為WG12864J-YYH-V中英文顯示模組,希望版主或哪位大大幫忙解決一下!小弟程式為下還有<LCD.INC及DELAY.INC兩個副檔>PIC與LCM模組為4-bit傳輸。

主程式:

LIST P=16F877, R=DEC
#INCLUDE P16F877.INC
CBLOCK 0X20
ENDC

CBLOCK
W_BAK, STATUS_BAK
T1, COUNT_N,COUNT_MS,COUNT
R0,R1,
ENDC
ORG 0
NOP
GOTO MAIN
;
ORG 4
PUSH:
MOVWF W_BAK
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_BAK

BANKSEL PIR1
BTFSS PIR1, RCIF
GOTO POP
MOVF RCREG,W
BCF PIR1,RCIF
call putcLCD
POP:
SWAPF STATUS_BAK,W
MOVWF STATUS
SWAPF W_BAK,F
SWAPF W_BAK,W

RETFIE

MAIN:

BANKSEL SPBRG
MOVLW 103
MOVWF SPBRG
;
CLRF TXSTA
BSF TXSTA,BRGH
BSF TXSTA,TXEN
;
BANKSEL RCSTA
CLRF RCSTA
BSF RCSTA,CREN
BSF RCSTA,SPEN
BANKSEL PIE1
BSF PIE1,RCIE
;
BANKSEL PIR1
BCF PIR1,RCIF
BSF INTCON,PEIE
BSF INTCON,GIE


CALL InitLCD
CALL clrLCD
CALL L1homeLCD


MOVLW .8
MOVWF R1
CLRF R0
HELLO:
MOVFW R0
CALL WELLCOM
call putcLCD
INCF R0
DECFSZ R1
GOTO HELLO
MAIN1:
CALL L3homeLCD
MOVLW .200
MOVWF T1
CALL DELAY
CALL DELAY
CALL S_ATD
CALL DELAY
CALL DELAY
CALL S_ATH
CALL DELAY
GOTO MAIN1
S_ATD:
MOVLW .15
MOVWF R1
CLRF R0

S_ATD_1:
MOVFW R0
CALL ATD_addr
MOVWF TXREG
BCF PIR1,TXIF
S_ATD_2:
BTFSS PIR1,TXIF
GOTO S_ATD_2
INCF R0
DECFSZ R1
GOTO S_ATD_1
RETURN
S_ATH:
MOVLW .4
MOVWF R1
CLRF R0
S_ATH_1:
MOVFW R0
CALL ATH_addr
MOVWF TXREG
BCF PIR1,TXIF
S_ATH_2:
BTFSS PIR1,TXIF
GOTO S_ATH_2
INCF R0
DECFSZ R1
GOTO S_ATH_1
RETURN
WELLCOM:
ADDWF PCL,F
DT"GSM=測試"
ATD_addr:
ADDWF PCL,F
DT"ATD電話號碼;"
retlw 0X0D
ATH_addr:
ADDWF PCL,F
DT "ATH"
retlw 0X0D

#INCLUDE <LCD.INC> ;
;
; Defines for I/O ports that provide LCD data & control ;
;
LCD_DATA equ PORTA ;
LCD_CNTL equ PORTA ;
;
RS equ 4 ; RS=PORTA,4 ;
E equ 5 ;


#INCLUDE <delay.inc>

END
副檔LCD.INC

DISP_ON EQU 0x00c
DISP_ON_C EQU 0x00E
DISP_ON_B EQU 0x00F
DISP_OFF EQU 0x008
CLR_DISP EQU 0x001
ENTRY_INC EQU 0x006
ENTRY_INC_S EQU 0x007
ENTRY_DEC EQU 0x004
ENTRY_DEC_S EQU 0x005
DD_RAM_ADDR EQU 0x080
DD_RAM_UL EQU 0x080


CBLOCK
Byte_LCD, Count, Count1, Count2, Posit_LCD, SystemFlag1
Byte, Byte1
ENDC

PUT_STRING MACRO STR_NO
movlw STR_NO-Msg1
call Message
ENDM

SET_CURSOR MACRO CUR_X,CUR_Y
movlw 0x80 + ((0x40*CUR_Y)+CUR_X)
call SendCmd
ENDM

InitLCD
BANKSEL ADCON1
MOVLW B'10000110'
MOVWF ADCON1
BANKSEL TRISA
MOVLW 0
MOVWF TRISA
MOVWF TRISC
BANKSEL PORTC
bcf PORTC, 0
call LongDelay


bsf PORTC, 0
call Delay


bcf STATUS,RP0
bcf STATUS,RP1
clrf LCD_DATA
; movwf LCD_DATA
; bsf STATUS,RP0

; btfsc PCON,NOT_POR
; goto InitLCDEnd

; bcf STATUS,RP0
call Delay
movlw 0x02
movwf LCD_DATA
; call Delay
bsf LCD_CNTL, E
; nop
bcf LCD_CNTL, E
call Delay


movlw 0x02
movwf LCD_DATA
; call Delay
bsf LCD_CNTL, E
; nop
bcf LCD_CNTL, E

movlw b'00000000'
movwf LCD_DATA
; call Delay
bsf LCD_CNTL, E
; nop
bcf LCD_CNTL, E
; call Delay

; call SendCmd

movlw DISP_ON_B
call SendCmd
; call Delay

call clrLCD
call LongDelay



movlw ENTRY_INC
call SendCmd


movlw DD_RAM_ADDR
call SendCmd
call Delay
InitLCDEnd

return


putcLCD
banksel Byte_LCD
movwf Byte_LCD
call Delay
swapf Byte_LCD,W
andlw 0x0f
movwf LCD_DATA

bsf LCD_CNTL, RS
nop
bsf LCD_CNTL, E
nop
bcf LCD_CNTL, E
movf Byte_LCD,W
andlw 0x0f
movwf LCD_DATA

bsf LCD_CNTL, RS
call Delay
nop
bsf LCD_CNTL, E
nop
bcf LCD_CNTL, E
incf Posit_LCD
return


putDIGIT:
banksel Byte
bsf SystemFlag1,0
andlw 0x0f
goto Hex_Loop


putHexLCD:
banksel Byte
bcf SystemFlag1,0

movwf Byte
swapf Byte,W
Hex_Loop
bcf SystemFlag1,1
andlw 0x0f
movwf Byte1
sublw .09
btfsc STATUS,C
goto Add_W_30A

Add_W_37A
movlw 0x37
goto Show_High_Nibble
Add_W_30A
movlw 0x30
Show_High_Nibble

addwf Byte1,F
call Delay
swapf Byte1,W

Write_LCD_Bus
andlw 0x0f
movwf LCD_DATA
nop
bsf LCD_CNTL, RS
nop
bsf LCD_CNTL, E
nop
bcf LCD_CNTL, E
btfsc SystemFlag1,1
goto Test_Char_Finish

movf Byte1,W
bsf SystemFlag1,1
goto Write_LCD_Bus

Test_Char_Finish:
btfsc SystemFlag1,0
return

movf Byte,W
andlw 0x0f
bsf SystemFlag1,0
goto Hex_Loop


SetCurLCD

return


SendCmd
movwf Byte_LCD
call Delay
swapf Byte_LCD,W
andlw 0x0f
movwf LCD_DATA

bcf LCD_CNTL,RS
bsf LCD_CNTL,E
nop
bcf LCD_CNTL,E
movf Byte_LCD,W
andlw 0x0f
movwf LCD_DATA
call Delay
bcf LCD_CNTL,RS
bsf LCD_CNTL,E
nop
bcf LCD_CNTL,E
return
clrLCD
BANKSEL CLR_DISP
movlw CLR_DISP
call SendCmd
call LongDelay
return
curonLCD
movlw DISP_ON_C
call SendCmd
return


curblkLCD
movlw DISP_ON_B
call SendCmd
return


movlw DISP_ON
call SendCmd
return
movcurLCD
BANKSEL Posit_LCD
addwf Posit_LCD
movf Posit_LCD,w
call SendCmd
return

movcurLCD_R
BANKSEL Posit_LCD
incf Posit_LCD
movf Posit_LCD,w
call SendCmd
return

movcurLCD_L
BANKSEL Posit_LCD
decf Posit_LCD
movf Posit_LCD,w
call SendCmd
return
L1homeLCD
banksel Posit_LCD
movlw DD_RAM_ADDR|0x00
movwf Posit_LCD
call SendCmd
return

L2homeLCD
banksel Posit_LCD
movlw DD_RAM_ADDR|0x10
movwf Posit_LCD
call SendCmd
return

L3homeLCD
banksel Posit_LCD
movlw DD_RAM_ADDR|0x08
movwf Posit_LCD
call SendCmd
return
L4homeLCD
banksel Posit_LCD
movlw DD_RAM_ADDR|0x18
movwf Posit_LCD
call SendCmd
return


Delay
clrf Count
movlw 0x01
movwf Count1
Dloop
decfsz Count,f
goto Dloop
decfsz Count1
goto Dloop
return


LongDelay
clrf Count
clrf Count1
movlw .2
movwf Count2
LDloop
decfsz Count,f
goto LDloop
decfsz Count1,f
goto LDloop
decfsz Count2,f
goto LDloop
return
Hex2BCD:
clrf Byte1
next_BCD1:
movwf Byte
movlw 10
subwf Byte, w
btfss STATUS, C
return
incf Byte1
goto next_BCD1
return
BCD2Hex:
movlw 0
incf Byte1
next_Hex2:
decfsz Byte1,f
goto next_Hex1
goto next_Hex3
next_Hex1:
addlw 10
goto next_Hex2
next_Hex3:
addwf Byte, w
return
putBCDLCD:
call Hex2BCD
show_BCD:
movfw Byte1
addlw "0"
call putcLCD
movfw Byte
addlw "0"
call putcLCD
end_putBCDLCD:
return
Hex2TwoByte:
movwf Byte1
andlw 0x0f
movwf Byte
swapf Byte1,W
andlw 0x0f
movwf Byte1
return


發表於: 2006/9/6 20:15
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

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... ]

教育訓練中心

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