H
honey361
Guest
親愛なるすべて、
どうすれば16進数に変換
することができます コードを次の
#含まれ<pic.h>
#含まれ<string.h>
#含まれ<stdio.h>
__CONFIG ( XTはBORDIS & & LVPDIS & PWRTDIS & WDTDIS & WRTEN ) ;
FOSC定義# 14318180
定義FPWM 20000 #署名のない文字Fila1 [ 16 ] ;
署名のない文字Fila2 [ 16 ] ;
未署名のINTを回転= 0 、 t0 = 0 、 t1が= 0 、すなわち= 0 ;ボイドInicio_PWM (ボイド)
(
/ /期間のPWM
PR2 = (符号なし文字) ( FOSC / ( FPWM * 4.0 ) -1 ) ;
/ /タイマ2とTimer2 preescaler値= 1が有効
T2CON = 4 ;
/ / PWMモード
CCP1M3 = 1 ;
CCP1M2 = 1 ;
)
ボイドのPWM (
署名のない INTは義務)
(
未署名のINTをtmpに;
/ /デューティ最大= FOSC / FPWM = 700
/ /デューティ分= 0
tmpに=義務;
CCP1Y = ( ( tmpに& 1 ) == 1 ) ?1 : 0 ; / / LSBの義務(ビット0 )
tmpに=義務;
CCP1X = ( ( tmpに& 2 ) == 2 ) ?1 : 0 ; / / (ビット1 )
tmpに=義務;
CCPR1L = (符号なし文字) ( tmpに> > 2 ) ; / / 8 MSBが義務(ビット10 .. 2 )
)ボイドRetardo ( INTはN )
の(
INTはj ;
(はJ = 0 ; j < Ñ ; j )
は ;
)ボイドControl_LCD (文字符号なし)
(
署名のない文字tmpに;
RC0 = 0 ;
RC1を= 0 ;
tmpに= ;
RC7 = ( ( tmpに& 128 ) == 128 ) ?1 : 0 ;
tmpに= ;
RC6 = ( ( tmpに& 64 ) == 64 ) ?1 : 0 ;
tmpに= ;
RC5 = ( ( tmpに& 32 ) == 32 ) ?1 : 0 ;
tmpに= ;
RC4の= ( ( tmpに& 16 ) == 16 ) ?1 : 0 ;
tmpに= ;
RB1 = ( ( tmpに&
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
==
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
?1 : 0 ;
tmpに= ;
RB2 = ( ( tmpに& 4 ) == 4 ) ?1 : 0 ;
tmpに= ;
RB3 = ( ( tmpに& 2 ) == 2 ) ?1 : 0 ;
tmpに= ;
RB4 = ( ( tmpに& 1 ) == 1 ) ?1 : 0 ;
Retardo ( 500 ) ;
RC3 = 1 ;
RC3 = 0 ;
)
ボイドDato_LCD (文字符号なし)
(
署名のない文字tmpに;
RC0 = 0 ;
tmpに= ;
RC7 = ( ( tmpに& 128 ) == 128 ) ?1 : 0 ;
tmpに= ;
RC6 = ( ( tmpに& 64 ) == 64 ) ?1 : 0 ;
tmpに= ;
RC5 = ( ( tmpに& 32 ) == 32 ) ?1 : 0 ;
tmpに= ;
RC4の= ( ( tmpに& 16 ) == 16 ) ?1 : 0 ;
tmpに= ;
RB1 = ( ( tmpに&
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
==
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
?1 : 0 ;
tmpに= ;
RB2 = ( ( tmpに& 4 ) == 4 ) ?1 : 0 ;
tmpに= ;
RB3 = ( ( tmpに& 2 ) == 2 ) ?1 : 0 ;
tmpに= ;
RB4 = ( ( tmpに& 1 ) == 1 ) ?1 : 0 ;
Retardo ( 500 ) ;
RC0 = 1 ;
RC3 = 1 ;
RC3 = 0 ;
)
ボイドInicio_LCD (ボイド)
(
RC0 = 1 ;
RC1を= 1 ;
RC3 = 1 ;
Retardo ( 500 ) ; / / 400
Control_LCD ( 56 ) ;
Retardo ( 500 ) ; / / 100
Control_LCD ( 56 ) ;
Retardo ( 500 ) ; / / 20
Control_LCD ( 56 ) ; / /命令コード
Control_LCD (
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
; / /ディスプレイオフ
Control_LCD ( 1 ) ; / /クリーン表¥示
Control_LCD ( 6 ) ; / /モードセット
Control_LCD ( 2 ) ; / /ホーム
Control_LCD ( 0b00001111 ) ; / / LCDに
は 、カーソ¥ルを
)
ボイドMostrarFila (
署名のない 文字極、署名のない文字チェーン[ ] )
(
署名のない文字j ;
もし(極== 1 ) Control_LCD ( 128 ) ;
もし(極== 2 ) Control_LCD ( 192 ) ;
(はJ = 0 ; j < 16 ; J )
を用(
Dato_LCD (チェーン[ j ] ) ;
)
)ボイドInicio_Timer0 (ボイド)
(
T0CS = 0 ; / /モードタイマー
T0IE = 1 ; / /マスクの中断を有効にするためのTimer0
PSAは= 0 ; / / Preescalerモードタイマー
/************************************************* ***************************************/
/ * Periodo = TMR0_Rate * 256 / ( FOSC / 4 ) : ( FOSC = 14MHz ) * /
/ * * /
/ * TMR0_Rate : 2 4 8 16 32 64 128 256 * /
/ *プレイステーション2 、 PS1 、 PS0 : 000 001 010 011 100 101 110 111 * /
/ *期間: 146us 292us 585us 1.17ms 2.34ms 4.68ms 9.36ms 19.4ms * /
/ *周波数: 6.7kHz 3.3kHz 1.7kHz 840Hz 420Hz 210Hz 105Hz 52.5Hz * /
/ * * /
/************************************************* ***************************************/
/ / TMR0_Rate = 4 - > T = 4 * 256 / ( 14.31818e6 / 4 ) = 286.06us
プレイステーション2 = 0 ;
PS1 = 0 ;
PS0 = 1 ;
)
( ボイド
) のISRの割り込み無効
(
もし( T0IF ) / / Timer0中断
(
t0 ;
t1が;
= 0 T0IF ;
)もし( INTF ) / /外部クロックの中断
(
の 例;
INTF = 0 ;
)
)
主( )
(
TRISA = 0b11001111 ;
TRISB = 0b11100001 ;
TRISC = 0b00000000 ;
ADCON1 = 0b10000000 ; / /ポートのデジタルI / Oと類推RA0入力
として構¥成
GIE = 1 ; / /すべてのマスクを有効にする世界的な中断
統合= 1 ; / / RB0/INTは
、 外部割り込み
を有効にする
Inicio_PWM ( ) ;
Inicio_LCD ( ) ;
Inicio_Timer0 ( ) ;sprintfを( Fila1 、 " VELOCIDADローター" ) ;
( ;
<img src=¥"http://www.edaboard.com/images/smiles/icon_wink.gif¥" alt=¥"ウインク¥" border=¥"0¥" />(
場合( t1が> = 205 ) / /各58.64ms
更新(
/ /分解能¥= 60 / ( 1024 * 58.64ms ) - > 1回転
回転数=すなわち;
すなわち
、 = 0 ;
もし
数 (
rpm > = 1500 )回転数= 1500 ;
のPWM ( ( INTは符号なし) ( rpm/2.142857 ) ) ; / /
700分の1500 = 2.142857
sprintfを( Fila2 、 " %
d個 ( rmp ) " 、回転数) ;
t1が= 0 ;
)もし( t0 > = 3496 ) / /液晶ディスプレイの各2回目に更新されます
(
MostrarFila ( 1 、 Fila1 ) ;
MostrarFila ( 2 、 Fila2 ) ;
t0 = 0 ;
)
)
)
どうすれば16進数に変換
することができます コードを次の
#含まれ<pic.h>
#含まれ<string.h>
#含まれ<stdio.h>
__CONFIG ( XTはBORDIS & & LVPDIS & PWRTDIS & WDTDIS & WRTEN ) ;
FOSC定義# 14318180
定義FPWM 20000 #署名のない文字Fila1 [ 16 ] ;
署名のない文字Fila2 [ 16 ] ;
未署名のINTを回転= 0 、 t0 = 0 、 t1が= 0 、すなわち= 0 ;ボイドInicio_PWM (ボイド)
(
/ /期間のPWM
PR2 = (符号なし文字) ( FOSC / ( FPWM * 4.0 ) -1 ) ;
/ /タイマ2とTimer2 preescaler値= 1が有効
T2CON = 4 ;
/ / PWMモード
CCP1M3 = 1 ;
CCP1M2 = 1 ;
)
ボイドのPWM (
署名のない INTは義務)
(
未署名のINTをtmpに;
/ /デューティ最大= FOSC / FPWM = 700
/ /デューティ分= 0
tmpに=義務;
CCP1Y = ( ( tmpに& 1 ) == 1 ) ?1 : 0 ; / / LSBの義務(ビット0 )
tmpに=義務;
CCP1X = ( ( tmpに& 2 ) == 2 ) ?1 : 0 ; / / (ビット1 )
tmpに=義務;
CCPR1L = (符号なし文字) ( tmpに> > 2 ) ; / / 8 MSBが義務(ビット10 .. 2 )
)ボイドRetardo ( INTはN )
の(
INTはj ;
(はJ = 0 ; j < Ñ ; j )
は ;
)ボイドControl_LCD (文字符号なし)
(
署名のない文字tmpに;
RC0 = 0 ;
RC1を= 0 ;
tmpに= ;
RC7 = ( ( tmpに& 128 ) == 128 ) ?1 : 0 ;
tmpに= ;
RC6 = ( ( tmpに& 64 ) == 64 ) ?1 : 0 ;
tmpに= ;
RC5 = ( ( tmpに& 32 ) == 32 ) ?1 : 0 ;
tmpに= ;
RC4の= ( ( tmpに& 16 ) == 16 ) ?1 : 0 ;
tmpに= ;
RB1 = ( ( tmpに&
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
==
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
?1 : 0 ;
tmpに= ;
RB2 = ( ( tmpに& 4 ) == 4 ) ?1 : 0 ;
tmpに= ;
RB3 = ( ( tmpに& 2 ) == 2 ) ?1 : 0 ;
tmpに= ;
RB4 = ( ( tmpに& 1 ) == 1 ) ?1 : 0 ;
Retardo ( 500 ) ;
RC3 = 1 ;
RC3 = 0 ;
)
ボイドDato_LCD (文字符号なし)
(
署名のない文字tmpに;
RC0 = 0 ;
tmpに= ;
RC7 = ( ( tmpに& 128 ) == 128 ) ?1 : 0 ;
tmpに= ;
RC6 = ( ( tmpに& 64 ) == 64 ) ?1 : 0 ;
tmpに= ;
RC5 = ( ( tmpに& 32 ) == 32 ) ?1 : 0 ;
tmpに= ;
RC4の= ( ( tmpに& 16 ) == 16 ) ?1 : 0 ;
tmpに= ;
RB1 = ( ( tmpに&
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
==
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
?1 : 0 ;
tmpに= ;
RB2 = ( ( tmpに& 4 ) == 4 ) ?1 : 0 ;
tmpに= ;
RB3 = ( ( tmpに& 2 ) == 2 ) ?1 : 0 ;
tmpに= ;
RB4 = ( ( tmpに& 1 ) == 1 ) ?1 : 0 ;
Retardo ( 500 ) ;
RC0 = 1 ;
RC3 = 1 ;
RC3 = 0 ;
)
ボイドInicio_LCD (ボイド)
(
RC0 = 1 ;
RC1を= 1 ;
RC3 = 1 ;
Retardo ( 500 ) ; / / 400
Control_LCD ( 56 ) ;
Retardo ( 500 ) ; / / 100
Control_LCD ( 56 ) ;
Retardo ( 500 ) ; / / 20
Control_LCD ( 56 ) ; / /命令コード
Control_LCD (
<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />
; / /ディスプレイオフ
Control_LCD ( 1 ) ; / /クリーン表¥示
Control_LCD ( 6 ) ; / /モードセット
Control_LCD ( 2 ) ; / /ホーム
Control_LCD ( 0b00001111 ) ; / / LCDに
は 、カーソ¥ルを
)
ボイドMostrarFila (
署名のない 文字極、署名のない文字チェーン[ ] )
(
署名のない文字j ;
もし(極== 1 ) Control_LCD ( 128 ) ;
もし(極== 2 ) Control_LCD ( 192 ) ;
(はJ = 0 ; j < 16 ; J )
を用(
Dato_LCD (チェーン[ j ] ) ;
)
)ボイドInicio_Timer0 (ボイド)
(
T0CS = 0 ; / /モードタイマー
T0IE = 1 ; / /マスクの中断を有効にするためのTimer0
PSAは= 0 ; / / Preescalerモードタイマー
/************************************************* ***************************************/
/ * Periodo = TMR0_Rate * 256 / ( FOSC / 4 ) : ( FOSC = 14MHz ) * /
/ * * /
/ * TMR0_Rate : 2 4 8 16 32 64 128 256 * /
/ *プレイステーション2 、 PS1 、 PS0 : 000 001 010 011 100 101 110 111 * /
/ *期間: 146us 292us 585us 1.17ms 2.34ms 4.68ms 9.36ms 19.4ms * /
/ *周波数: 6.7kHz 3.3kHz 1.7kHz 840Hz 420Hz 210Hz 105Hz 52.5Hz * /
/ * * /
/************************************************* ***************************************/
/ / TMR0_Rate = 4 - > T = 4 * 256 / ( 14.31818e6 / 4 ) = 286.06us
プレイステーション2 = 0 ;
PS1 = 0 ;
PS0 = 1 ;
)
( ボイド
) のISRの割り込み無効
(
もし( T0IF ) / / Timer0中断
(
t0 ;
t1が;
= 0 T0IF ;
)もし( INTF ) / /外部クロックの中断
(
の 例;
INTF = 0 ;
)
)
主( )
(
TRISA = 0b11001111 ;
TRISB = 0b11100001 ;
TRISC = 0b00000000 ;
ADCON1 = 0b10000000 ; / /ポートのデジタルI / Oと類推RA0入力
として構¥成
GIE = 1 ; / /すべてのマスクを有効にする世界的な中断
統合= 1 ; / / RB0/INTは
、 外部割り込み
を有効にする
Inicio_PWM ( ) ;
Inicio_LCD ( ) ;
Inicio_Timer0 ( ) ;sprintfを( Fila1 、 " VELOCIDADローター" ) ;
( ;
<img src=¥"http://www.edaboard.com/images/smiles/icon_wink.gif¥" alt=¥"ウインク¥" border=¥"0¥" />(
場合( t1が> = 205 ) / /各58.64ms
更新(
/ /分解能¥= 60 / ( 1024 * 58.64ms ) - > 1回転
回転数=すなわち;
すなわち
、 = 0 ;
もし
数 (
rpm > = 1500 )回転数= 1500 ;
のPWM ( ( INTは符号なし) ( rpm/2.142857 ) ) ; / /
700分の1500 = 2.142857
sprintfを( Fila2 、 " %
d個 ( rmp ) " 、回転数) ;
t1が= 0 ;
)もし( t0 > = 3496 ) / /液晶ディスプレイの各2回目に更新されます
(
MostrarFila ( 1 、 Fila1 ) ;
MostrarFila ( 2 、 Fila2 ) ;
t0 = 0 ;
)
)
)