11.1.5 Cho php v cm ngt. Khi bt li ngun th tt c mi ngt u b cm (b che) c ngha l khng c ngt no s c b vi iu khin p ng nu chng c kch hot. Cc ngt phi c kch hot bng phn mm b vi iu khin p ng chng. C mt thanh ghi c gi l cho php ngt IE (Interrupt Enable) chu trch nhim v vic cho php (khng che) v cm (che) cc ngt. Hnh 11.2 trnh by thanh ghi IE, lu rng IE l thanh ghi c th nh a ch theo bt. T hnh 11.2 ta thy rng D7 ca thanh ghi IE c gi l bt cho php tt c cc ngt EA (Euable All). Bt ny phi c thit lp ln 1 phn cn li ca thanh ghi hot ng c. Bt D6 cha c s dng. Bt D54 c dnh cho 8051, cn bt D4 dng cho ngt ni tip v.v 11.1.6 Cc bc khi cho php ngt. cho php mt ngt ta phi thc hin cc bc sau: 1. Bt D7 ca thanh ghi IE l EA phi c bt ln cao cho php cc bt cn li ca thanh ghi nhn c hiu ng. 2. Nu EA = 1 th tt c mi ngt u c php v s c p ng nu cc bt tng ng ca chng trong IE c mc cao. Nu EA = 0 th khng c ngt no s c p ng cho d bt tng ng ca n trong IE c gi tr cao. hiu im quan trong ny hy xt v d 11.1. Hnh 11.2: Thanh ghi cho php ngt IE.
D7 D0
EA
EA
--
ET2
ES
ET1
EX1
ET0
EX0
IE.7 Nu EA = 0 th mi ngt b cm Nu EA = 1 th mi ngun ngt c cho php hoc b cm bng cc bt hoc xo bt cho php ca n. -IE.6 D phng cho tng lai ET2 IE.5 Cho php hoc cm ngt trn hoc thu ca Timer2 (8051) ES IE.4 Cho php hoc cm ngt cng ni tip ET1 IE.3 Cho php hoc cm ngt trn ca Timer1 EX1 IE.2 Cho php hoc cm ngt ngoi 1 ET0 IE.1 Cho php hoc cm ngt trn ca Timer0 EX0 IE.0 Cho php hoc cm ngt ngoi 0 * Ngi dng khng phi ghi 1 vo bt d phng ny. Bt ny c th dng cho cc b vi iu khin nhanh vi c tnh mi V d 11.1:
V IE l thanh ghi c th nh a ch theo bt nn ta c th s dng cc lnh sau y truy cp n cc bt ring r ca thanh ghi:
SETB SETB SETB SETB IE.7 IE.4 IE.1 IE.2 ; EA = 1, Cho php tt c mi ngt ; Cho php ngt ni tip ; Cho php ngt Timer1 ; Cho php ngt phn cng ngoi 1
(tt c nhng lnh ny tng ng vi lnh MOV IE, #10010110B trn y).
b) CLR IE.1 c) CLR IE.7 ; Xo (che) ngt Timer0 ; Cm tt c mi ngt.
11.2 Lp trnh cc ngt b nh thi. Trong chng 9 ta ni cch s dng cc b nh thi Timer0 v Timer1 bng phng php thm d. Trong phn ny ta s s dng cc ngt lp trnh cho cc b nh thi ca 8051. 11.2.1 C quay v 0 ca b nh thi v ngt. Trong chng 9 chng ta ni rng c b nh thi TF c t ln cao khi b nh thi t gi tr cc i v quay v 0 (Roll - over). Trong chng trnh ny chng ta cng ch ra cch hin th c TF bng lnh JNB TF, ch. Khi thm d c TF th ta phi i cho n khi c TF c bt ln. Vn vi phng php ny l b vi iu khin b tri buc khi c TF c bt ln v khng th lm c bt k vic g khc. S dng cc ngt gii quyt c vn ny v trnh c s tri buc ca b vi iu khin. Nu b ngt nh thi trong thanh ghi IE c php th mi khi n quay tr v 0 c TF c bt ln v b vi iu khin b ngt ti bt k vic g n ang thc hin v nhy ti bng vc t ngt phc v ISR. Bng cch ny th b vi iu khin c th lm nhng cng vic khc cho n khi no n c thng bo rng b nh thi quay v 0. Xem hnh 11.3 v v d 11.2.
TF0 1 Jumps to Timer 0 Interruptor 000BH TF1 1 Jumps to Timer 1 Interruptor 001BH
Hnh 11.3: Ngt b nh thi TF0 v TF1. Hy nhng im chng trnh di y ca chng trnh trong v d 11.2. 1. Chng ta phi trnh s dng khng gian b nh dnh cho bng vc t ngt. Do vy, ta t tt c m khi to ti a ch 30H ca b nh. Lnh LJMP l lnh u
Trong v d 11.2 trnh phc v ngt ISR ngn nn n c th t va vo khng gian a ch dnh cho ngt Timer0 trong bng vc t ngt. Tt nhin khng phi lc no cng lm c nh vy. Xt v d 11.3 di y. V d 11.3: Hy vit li chng trnh v d 11.2 to sng vung vi mc cao ko di 1085ms v mc thp di 15ms vi gi thit tn s XTAL = 11.0592MHz. Hy s dng b nh thi Timer1. Li gii:
Lu rng phn xung mc thp c to ra bi 14 chu k mc MC v mi MC = 1.085ms v 14 1.085ms = 15.19ms. V d 11.4: Vit mt chng trnh to ra mt sng vung tn s 50Hz trn chn P1.2. V d ny tng t v d 9.12 ngoi tr ngt Timer0, gi s XTAL = 11.0592MHz. Li gii:
ORG 0 LJMP MAIN ORG 000BH CPL P1.2 MOV TL0, # 00 MOV TH0, # 0DCH RETI ORG 30H ; ------------ main program for initialization MAIN: MOV TMOD, # 00000001B ; Chng trnh con phc v ngt cho Timer0
; Chn Timer0 ch 1
HERE: SJMP
P1.2
11.3 Lp trnh cc ngt phn cng bn ngoi. B vi iu khin 8051 c hai ngt phn cng bn ngoi l chn 12 (P3.2) v chn 13 (P3.3) dng cho ngt INT0 v INT1. Khi kch hot nhng chn ny th 8051 b ngt ti bt k cng vic no m n ang thc hin v n nhy n bng vc t ngt thc hin trnh phc v ngt.
Level - tringgered INTO (Pin 3.2) 0 1 Edge - triggered ITO IE0 (TCON.1) 0003
Level - tringgered INTO (Pin 3.3) 0 1 Edge - triggered IT1 IE0 (TCON.3) 0013
11.3.1 Cc ngt ngoi INT0 v INT1. Ch c hai ngt phn cng ngoi trong 8051 l INT0 v INT1. Chng c b tr trn chn P3.2 v P3.3 v a ch ca chng trong bng vc t ngt l 0003H v 0013H. Nh ni mc 11.1 th chng c ghp v b cm bng vic s dng thanh ghi IE. Vy chng c kch hot nh th no? C hai mc kch hot cho cc ngt phn cng ngoi: Ngt theo mc v ngt theo sn. Di y l m t hot ng ca mi loi. 11.3.2 Ngt theo mc. ch ngt theo mc th cc chn INT0 v INT1 bnh thng mc cao (ging nh tt c cc chn ca cng I/O) v nu mt tn hiu mc thp c cp ti chng th n ghi nhn ngt. Sau b vi iu khin dng tt c mi cng vic n
n cng tc xung s lm cho n LED sng. Nu n c gi trng thi c kch hot th n LED sng lin tc.
Vcc 8051 P1.3 INTI to LED
Trong chng trnh ny b vi iu khin quay vng lin tc trong vng lp HERE. Mi khi cng tc trn chn P3.3 (INT1) c kch hot th b vi iu khin thot khi vng lp v nhy n bng vc t ngt ti a ch 0013H. Trnh ISR cho INT1 bt n LED ln gi n mt lc v tt n trc khi tr v. Nu trong lc n thc hin lnh quay tr v RET1 m chn INT1 vn cn mc thp th b vi iu khin khi to li ngt. Do vy, gii quyt vn ny th chn INT1 phi c a ln cao ti thi im lnh RET1 c thc hin. 11.3.3 Trch mu ngt theo mc.
4 1.085ms Ghi ch: Khi bt li ngun (RESET) th c hai chn INT0 v INT1 u mc thp to cc ngt ngoi theo mc. Hnh 11.5: Thi gian ti thiu ca ngt theo mc thp (XTAL = 11.0592MHz) 11.3.4 Cc ngt theo sn. Nh ni trc y trong qu trnh bt li ngun th 8051 lm cc chn INT0 v INT1 l cc ngt theo mc thp. bin cc chn ny tr thnh cc ngt theo sn th chng ta phi vit chng trnh cho cc bt ca thanh ghi TCON. Thanh thi TCON gi cc bt c IT0 v IT1 xc nh ch ngt theo sn hay ngt theo mc ca cc ngt phn cng IT0 v IT1 l cc bt D0 v D2 ca thanh ghi TCON tng ng. Chng c th c biu din nh TCON.0 v TCON.2 v thanh ghi TCON c th nh a ch theo bt. Khi bt li ngun th TCON.0 (IT0) v TCON.2 (IT1) u mc thp (0) ngha l cc ngt phn cng ngoi ca cc chn INT0 v INT1 l ngt theo mc thp. Bng vic chuyn cc bt TCON.0 v TCON.2 ln cao qua cc lnh SETB TCON.0 v SETB TCON.2 th cc ngt phn cng ngoi INT0 v INT1 tr thnh cc ngt theo sn. V d, lnh SETB TCON.2 lm cho INT1 m c gi l ngt theo sn trong khi mt tn hiu chuyn t cao xung thp c cp n chn P3.3 th trng hp ny b vi iu khin s b ngt v b cng bc nhy n bng vc t ngt ti a ch 0013H thc hin trnh phc v ngt. Tuy nhin l vi gii thit rng bt ngt c cho php trong thanh ghi IE.
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
Hnh 11.6: Thanh ghi TCON. Bt TF1 hay TCON.7 l c trn ca b Timer1. N c lp bi phn cng khi b m/ b nh thi 1 trn, n c xo bi phn cng khi b x l ch n trnh phc v ngt. Bt TR1 hay TCON.6 l bt iu khin hot ng ca Timer1. N c thit lp v xo bi phn mm bt/ tt Timer1. Bt TF0 hay TCON.5 tng t nh TF1 dnh cho Timer0. Bt TR0 hay TCON.4 tng t nh TR1 dnh cho Timer0. Bt IE1 hay TCON.3 c ngt ngoi 1 theo sn. N c thit lp bi CPU khi sn ngt ngoi (chuyn t cao xung thp) c pht hin. N c xa bi CPU khi ngt c x l. Lu : C ny khng cht nhng ngt theo mc thp. Bt IT1 hay TCON.2 l bt iu khin kiu ngt. N c thit lp v xo bi phn mm xc nh kiu ngt ngoi theo sn xung hay mc thp. Bt IE0 hay TCON.1 tng t nh IE1 dnh cho ngt ngoi 0. Bt IT0 hay TCON.0 tng t nh bt IT1 dnh cho ngt ngoi 0. Xt v d 11.6, ch rng s khc nhau duy nht gia v d ny v v d 11.5 l trong hng u tin ca MAIN khi lnh SETB TCON.2 chuyn ngt INT1 v kiu ngt theo sn. Khi sn xung ca tn hiu c cp n chn INT1 th n LED s bt ln mt lc. n LED c thi gian sng ph thuc vo tr bn trong ISR ca INT1. bt li n LED th phi c mt sn xung xung khc c cp n chn P3.3. iu ny ngc vi v d 11.5. Trong v d 11.5 do bn cht ngt theo mc ca ngt th n LED cn sng chng no tn hiu chn INT1 vn cn mc thp. Nhng trong v d ny bt li n LED th xung chn INT1 phi c a ln cao ri sau b h xung thp to ra mt sn xung lm kch hot ngt. V d 11.6: Gi thit chn P3.3 (INT1) c ni vi mt my to xung, hy vit mt chng trnh trong sn xung ca xung s gi mt tn hiu cao n chn P1.3 ang c ni ti n LED (hoc mt ci bo). Hay ni cch khc, n LED c bt v tt cng tn s vi cc xung c cp ti chn INT1. y l phin bn ngt theo sn xung ca v d 11.5 trnh by trn. Li gii:
ORG 0000H LJMP MAIN ; - - Trnh phc v ngt ISR dnh cho ngt INT1 bt n LED ORG 0013H ; Nhy n a ch ca trnh phc v ngt INT1 SETB P1.3 ; Bt n LED (hoc ci) MOV R3, #225 BACK: DJNZ R3, HERE ; gi n LED (hoc ci) mt lc CLR P1.3 ; Tt n LED (hoc ci) RETI ; Quay tr v t ngt ; - - Bt u chng trnh chnh ORG 30H SETB TCON.2 ; Chuyn ngt INT1 v kiu ngt theo sn xung
11.3.5 Trnh mu ngt theo sn. Trc khi kt thc phn ny ta cn tr li cu hi vy th ngt theo sn c trch mu thng xuyn nh th no? Trong cc ngt theo sn, ngun ngoi phi gi mc cao ti thiu l mt chu trnh my na m bo b vi iu khin nhn thy c s chuyn dch t cao xung thp ca sn xung.
1MC 1.085ms 1MC
1.085ms
Thi hn xung ti thiu pht hin ra cc ngt theo sn xung vi tn s XTAL = 11.0592MHz Sn xung ca xung c cht bi 8051 v c gia bi thanh ghi TCON. Cc bt TCON.1 v TCON.3 gi cc sn c cht ca chn INT0 v INT1 tng ng. TCON.1 v TCON.3 cng cn c gi l cc bt IE0 v IE1 nh ch ra trn hnh 11.6. Chng hot ng nh cc c ngt ang c phc v (Interrupt-inserver). Khi mt c ngt ang c phc v bt ln th n bo cho th gii thc bn ngoi rng ngt hin nay ang c x l v trn chn INTn ny s khng c ngt no c p ng chng no ngt ny cha c phc v xong. y ging nh tn hiu bo bn my in thoi. Cn phi nhn mnh ht im di y khi quan tm n cc bt IT0 v IT1 ca thanh ghi TCON. 1. Khi cc trnh phc v ngt ISR kt thc (ngha l trong thanh ghi thc hin lnh RETI). Cc bt ny (TCON.1 v TCON.3) c xo bo rng ngt c hon tt v 8051 sn sng p ng ngt khc trn chn . ngt khc c nhn v th tn hiu trn chn phi tr li mc cao v sau nhy xung thp c pht hin nh mt ngt theo sn. 2. Trong thi gian trnh phc v ngt ang c thc hin th chn INTn b lm ng khng quan tm n n c bao nhiu ln chuyn dch t cao xung thp. Trong thc t n l mt trong cc chc nng ca lnh RETI xo bt tng ng trong thanh ghi TCON (bt TCON.1 v TCON.3). N bo cho ta rng trnh phc v ngt xp kt thc. V l do ny m cc bt TCON.1 v TCON.3 c gi l cc c bo ngt ang c phc v c ny s ln cao khi mt sn xung c pht hin trn chn INT v dng mc cao trong ton b qu trnh thc hin ISR. N ch b xo bi lnh RETI l lnh cui cng ca ISR. Do vy, s khng bo gi cn n cc lnh xo bt ny nh CLR TCON.1 hay CLR TCON.3 trc lnh RETI trong trnh phc v ngt i vi cc ngt cng INT0 v INT1. iu ny khng ng vi trng hp ca ngt ni tip. V d 11.7: S khc nhau gia cc lnh RET v RETI l g? Gii thch ti sao ta khng th dng lnh RET thay cho lnh RETI trong trnh phc v ngt. Li gii:
TI RI
0023H
Hnh 11.7: Ngt truyn thng c th do hai c TI v RI gi. 11.4.2 S dng cng COM ni tip trong 8051. Trong phn ln cc ng dng, ngt ni tip ch yu c s dng nhn d liu v khng bao gi c s dng truyn d liu ni tip. iu ny ging nh vic bo chung nhn in thoi, cn nu ta mun gi in thoi th c nhiu cch khc ngt ta ch khng cn n chung. Tuy nhin, trong khi nhn in thoi ta phi tr li ngay khng bit ta ang lm g nu khng thuc gi s (mt) i qua. Tng t nh vy, ta s dng cc ngt ni tip khi nhn d liu i n sao chp cho n khng b mt: Hy xt v d 11.9 di y. V d 11.8:
MAIN:
BACK:
; Nhy n trnh phc v ngt truyn thng ni tip ; Ly cng P1 lm cng u vo ; Chn Timer1, ch 2 t np li ; Chn tc baud = 9600 ; Khung d liu: 8 bt d liu, 1 stop cho php REN ; Cho php ngt ni tip ; Khi ng Timer1 ; c d liu t cng P1 ; Ly mt bn sao ti SBUF ; Gi n n cng P2 ; li trong vng lp
; ; --------------------------Trnh phc v ngt cng ni tip ORG 100H SERIAL: JB TI,TRANS ; Nhy n c TI cao MOV A, SBUF ; Nu khng tip tc nhn d liu CLR RI ; Xo c RI v CPU khng lm iu ny RETI ; Tr v t trnh phc v ngt TRANS: CLR TI ; Xo c TI v CPU khng lm iu ny RETI ; Tr v t ISR END
Trong vn trn thy ch n vai tr ca c TI v RI. Thi im mt byte c ghi vo SBUF th n c ng khung v truyn i ni tip. Kt qu l khi bt cui cng (bt stop) c truyn i th c TI bt ln cao v n gy ra ngt ni tip c gi khi bt tng ng ca n trong thanh ghi IE c a ln cao. Trong trnh phc v ngt ni tip, ta phi kim tra c c TI v c RI v c hai u c th gi ngt hay ni cch khc l ch c mt ngt cho c truyn v nhn. V d 11.9: Hy vit chng trnh trong 8051 nhn d liu t cng P1 v gi lin tc n cng P2 trong khi d liu i vo t cng ni tip COM c gi n cng P0. Gi thit tn s XTAL l 11.0592MHz v tc baud 9600. Li gii:
ORG LJMP ORG LJMP ORG MOV MOV MOV 0 MAIN 23H SERIAL 03H P1, # FFH TMOD, # 20H TH1, # 0FDH ; Ly cng P1 l cng u vo ; Chn Timer v ch hai t np li ;Khung d liu: 8 bt d liu, 1 stop, cho php REN
MAIN:
11.4.3 Xo c RI v TI trc lnh RETI. rng lnh cui cng trc khi tr v t ISR l RETI l lnh xo cc c RI v TI. y l iu cn thit bi v l ngt duy nht dnh cho nhn v truyn 8051 khng bit c ngun gy ra ngt l ngun no, do vy trnh phc v ngt phi c xo cc c ny cho php cc ngt sau c p ng sau khi kt thc ngt. iu ny tng phn vi ngt ngoi v ngt b nh thi u c 8051 xo cc c. Cc lnh xo cc c ngt bng phn mm qua cc lnh CLR TI v CLR RI. Hy xt v d 11.10 di y v n cc lnh xo c ngt trc lnh RETI. V d 11.10: Hy vit mt chng trnh s dng cc ngt thc hin cc cng vic sau: a) Nhn d liu ni tip v gi n n cng P0. b) Ly cng P1 c v truyn ni tip v sao n cng P2. c) S dng Timer0 to sng vung tn s 5kHz trn chn P0.1 git thit tn s XTAL = 11.0592MHz v tc baud 4800. Li gii:
ORG LJMP ORG CPL RETI ORG LJMP ORG MOV MOV MOV MOV MOV MOV SETB SETB MOV MOV MOV 0 MAIN 000BH P0.1 ; Trnh phc v ngt dnh cho Timer0 : To xung chn P0.1 ; Tr v t ISR ; Nhy n a ch ngt truyn ni tip ; Ly cng P1 lm cng u vo ; Chn Timer0 v Timer1 ch 2 t np li ; Chn Timer0 v Timer1 ch 2 t np li ; Chn tc baud 4800 ; Khung d liu: 8 bt d liu, 1 stop, cho php REN ; To tn s 5kHz ; Cho php ngt ni tip ; Khi ng Timer1 ; Khi ng Timer0 ; c d liu t cng P1 ; Ly mt ln bn sao d liu ; Ghi n vo cng P2
MAIN :
BACK:
23H SERIAL 30H P1, # 0FFH TMOD, # 22H TH1, # 0F6H SCON, # 50H TH0, # - 92 IE, # 10010010B TR1 TR0 A, P1 SBUF, A P2, A
Trc khi kt thc phn ny hy n danh sch tt c mi c ngt c cho trong bng 11.2. Trong khi thanh thi TCON gi 4 c ngt cn hai c TI v RI trong thanh ghi SCON ca 8051. Bng 11.2: Cc bt c ngt. Ngt Ngt ngoi 0 Ngt ngoi 1 Ngt Timer0 Ngt Timer1 Ngt cng ni tip Ngt Timer2 Ngt Timer2 C IE0 IE1 TF0 TF1 T1 TF2 EXF2 Bt ca thanh ghi SFR TCON.1 TCON.3 TCON.5 TCON.7 SCON.1 T2CON.7 (TA89C52) T2CON.6 (TA89C52)
11.5 Cc mc u tin ngt trong 8051. 11.5.1 Cc mc u tin trong qu trnh bt li ngun. Khi 8051 c cp ngun th cc mc u tin ngt c gn theo bng 11.3. T bng ny ta thy v d nu cc ngt phn cng ngoi 0 v 1 c kch hot cng mt lc th ngt ngoi 0 s c p ng trc. Ch sau khi ngt INT0 c phc v xong th INT1 mi c phc v v INT1 c mc u tin thp hn. Trong thc t s mc u tin ngt trong bng khng c ngha g c m mt quy trnh thm d trong 8051 thm d cc ngt theo trnh t cho trong bng 11.3 v p ng chng mt cch ph hp. Bng 11.3: Mc u tin cc ngt trong khi cp li ngun. Mc u tin cao xung thp Ngt ngoi 0 Ngt b nh thi 0 Ngt ngoi 1 Ngt b nh thi 1 Ngt truyn thng ni tip V d 11.1: INT0 TF0 INT1 TF1 (RI + TI)
--
--
PT2
PS
PT1
PX1
PT0
PX0
Hnh 11.8: Thanh ghi mc u tin ngt IP, bt u tin = 1 l mc u tin cao, bt u tin = 0 l mc u tin thp. - Bt D7 v D6 hay IP.7 v IP.6 - cha dng. - Bt D5 hay IP.5 l bt u tin ngt Timer2 (dng cho 8052) - Bt D4 hay IP.4 l bt u tin ngt cng ni tip - Bt D3 hay IP.3 l bt u tin ngt Timer1 - Bt D2 hay IP.2 l mc u tin ngt ngoi 1 - Bt D1 hay IP.1 l mc u tin ngt Timer 0 - Bt D0 hay IP.0 l mc u tin ngt ngoi 0 Ngi dng khng c vit phn mm ghi cc s 1 vo cc bt cha dng v chng dnh cho cc ng dng tng li. 11.5.2 Thit lp mc u tin ngt vi thanh ghi IP. Chng ta c th thay i trnh t trong bng 11.3 bng cch gn mc u tin cao hn cho bt k ngt no. iu ny c thc hin bng cch lp trnh mt thanh ghi gi l thanh ghi mc u tin ngt IP (Interrupt Priority). Trn hnh 11.8 l cc bt ca thanh ghi ny, khi bt li ngun thanh thi 1P cha hon ton cc s 0 to ra trnh t u tin ngt theo bng 11.3. mt ngt no mc u tin cao hn ta thc hin a bt tng ng ln cao. Hy xem v d 11.12. Mt im khc na cn c lm sng t l mc u tin ngt khi hai hoc nhiu bt ngt trong thanh ghi IP c t ln cao. Trong trng hp ny th trong khi cc ngt ny c mc u tin cao hn cc ngt khc chng s c phc v theo trnh t cho trong bng 11.3. Xem v d 11.13. V d 11.12: a) Hy lp trnh thanh ghi IP gn mc u tin cao nht cho ngt INT1 (ngt ngoi 1) sau . b) Hy phn tch iu g xy ra khi INT0, INT1 v TF0 c kch hot cng lc. Gi thit tt c cc ngt u l cc ngt theo sn. Li gii: a) MOV IP, #0000 0100B ; t bt IP.2 = 1 gn INT1 mc u tin cao nht. Lnh SETB IP.2 cng tc ng tng t bi v IP l thanh ghi c th nh a ch theo bt. b) Lnh trong bc a) gn mc u tin cao hn INT1 so vi cc ngt khc, do vy khi INT0, INT1 v TF0 c kch hot cng lc th trc ht INT1 c phc v