{"id":414,"date":"2015-06-02T20:06:58","date_gmt":"2015-06-02T17:06:58","guid":{"rendered":"http:\/\/ozenozkaya.com\/blog\/?p=414"},"modified":"2015-06-02T20:06:58","modified_gmt":"2015-06-02T17:06:58","slug":"pic-programlama-4-giris-cikis-io-inputoutput-islemleri","status":"publish","type":"post","link":"http:\/\/ozenozkaya.com\/blog\/?p=414","title":{"rendered":"PIC Programlama \u2013 4 \u2013 Giri\u015f \u00c7\u0131k\u0131\u015f (I\/O, Input\/Output) \u0130\u015flemleri"},"content":{"rendered":"<p>Merhabalar,\u00a0bir \u00f6nceki <a href=\"http:\/\/ozenozkaya.com\/blog\/?p=403\" target=\"_blank\">yaz\u0131m\u0131zda\u00a0<\/a>\u00a0PIC i\u00e7in yazd\u0131\u011f\u0131m\u0131z bir merhaba d\u00fcnya kodunun i\u00e7ini d\u0131\u015f\u0131n\u0131 halla\u00e7 pamu\u011funa \u00e7evirmi\u015f ve say\u0131s\u0131z ibretlerle keyiflenmi\u015ftik. Bu yaz\u0131m\u0131zda da PIC16&#8217;n\u0131n bir pinini nas\u0131l giri\u015f yapar\u0131z, nas\u0131l \u00e7\u0131k\u0131\u015f yapar\u0131z, bir giri\u015f pininden nas\u0131l de\u011fer okuruz, bir \u00e7\u0131k\u0131\u015f pinine nas\u0131l de\u011fer yazar\u0131z gibi i\u015flemlere de\u011finece\u011fiz \ud83d\ude42 S\u00f6z\u00fcn \u00f6z\u00fc, hayat\u0131 bir dizi gerilimsel i\u015faretle m\u0131nc\u0131klayaca\u011f\u0131z \ud83d\ude42<\/p>\n<div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#74ad73;border-radius:3px;\"><div class=\"su-box-title\" style=\"background-color:#a7e0a6;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Sosyal Mesaj<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">Malumunuz bu yaz\u0131m \u00f6ncekilere nazaran epey gecikti. Ciddi bir ara vermi\u015f oldum ancak ger\u00e7ekten\u00a0yo\u011fun bir d\u00f6nemi geride b\u0131rakm\u0131\u015f oldu\u011fumu belirtip, aff\u0131n\u0131za s\u0131\u011f\u0131narak yaz\u0131 dizilerine devam ediyorum.<\/div><\/div>\n<p>\u015eimdi, yine bir k\u00fct\u00fcphane kullanmadan (ya da sadece kendi yazd\u0131\u011f\u0131m\u0131z k\u00fct\u00fcphaneleri kullanarak) bir kara\u015fim\u015fek kodu yazal\u0131m =) Kara\u015fim\u015fek kodu me\u015fhurdur dostlar =) es ge\u00e7meyelim!<\/p>\n<p>T\u0131pk\u0131 PIC mikrodentleyicilerinin bizler i\u00e7in &#8220;ara\u00e7&#8221; olmas\u0131 gibi, kara\u015fim\u015fek kodu da anlatmak istediklerimizi anlatmak \u00fczere kullanaca\u011f\u0131m\u0131z bir ara\u00e7 olacak. Amac\u0131m\u0131z ibretleri birer birer kapmak. S\u00f6z\u00fc sak\u0131z edip uzatmadan hemen kodumuzu yazal\u0131m.<\/p>\n<pre class=\"lang:c decode:true\" title=\"main.cpp\">\/* \n * File:   main.c\n * Author: ozenozkaya\n *\n * Created on 02 Haziran 2015 Sali, 12:47\n *\/\n\n#define F_OSC (1000000UL)\n\n#define REG_TRISB (*( volatile unsigned char*)0x086)\n#define REG_PORTB (*( volatile unsigned char*)0x006)\n\nstatic void InitializeLedArray(void);\nstatic void DummyDelayMs(unsigned int delay_ms);\n\n\nvoid main() {\n    unsigned char led_index=0;\n    InitializeLedArray();\n    while(1)\n    {\n        for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&lt;&lt;1;\n            DummyDelayMs(100);\n        }\n         for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&gt;&gt;1;\n            DummyDelayMs(100);\n        }\n    }\n}\n\nstatic void InitializeLedArray(void)\n{\n    REG_TRISB = 0;\n    REG_PORTB = 1;\n    DummyDelayMs(100);\n}\n\nstatic void DummyDelayMs(unsigned int delay_ms)\n{\n    unsigned long cnt=0;\n    unsigned long delay_limit_ms= delay_ms*(F_OSC\/120000);\n    for(cnt=0;cnt&lt;delay_limit_ms;cnt++);\n}\n\n<\/pre>\n<p>Evet efendim kodumuz yukar\u0131da yer ald\u0131\u011f\u0131 gibi. \u00c7\u0131kt\u0131s\u0131n\u0131 g\u00f6stermeden \u00f6nce, dilerseniz kodu bir a\u00e7\u0131klayay\u0131m. \u0130lk a\u015famada bekletme (delay) i\u015flemlerini yapabilmek i\u00e7in \u00e7al\u0131\u015fma frekans\u0131n\u0131 giriyoruz. Buna g\u00f6re \u00e7al\u0131\u015fma frekans\u0131 1.000.000 Hz yani 1MHZ olarak a\u015fa\u011f\u0131daki gibi belirleniyor.<\/p>\n<pre class=\"lang:c decode:true\">#define F_OSC (1000000UL)<\/pre>\n<p>Ard\u0131ndan, bir \u00f6nceki yaz\u0131m\u0131zda anlatt\u0131\u011f\u0131m\u0131z \u00fczere kendi \u00e7abalar\u0131m\u0131zla register tan\u0131m\u0131n\u0131 yap\u0131yoruz. Malum bu yaz\u0131 dizisinde bir hedef de PIC&#8217;i bahane edip, bir mikrokontrol\u00f6re k\u00fct\u00fcphane nas\u0131l yaz\u0131l\u0131r onu da \u00f6\u011frenmek. \u00d6nceki yaz\u0131da myTRISB diye yapt\u0131\u011f\u0131m\u0131z register tan\u0131m\u0131 A\u011fao\u011flu MyTRISB projesi ile isim benzerli\u011fi g\u00f6stermesin diye isimlendirmeyi birazc\u0131k de\u011fi\u015ftirdik \ud83d\ude1b<\/p>\n<pre class=\"lang:c decode:true\">#define REG_TRISB (*( volatile unsigned char*)0x086)\n#define REG_PORTB (*( volatile unsigned char*)0x006)<\/pre>\n<p>Bunlar malumunuz; efektif \u015fekilde tan\u0131mlanm\u0131\u015f k\u00fct\u00fckler. Ben afedersiniz k\u00fct\u00fck diyorum ama onun \u0130ngilizcesi &#8220;register&#8221;. Neyse bir sonraki a\u015famada main&#8217;e ge\u00e7ecek olursak \u00f6nce pin&#8217;lere ilk de\u011fer veriliyor ki o k\u0131s\u0131m zaten \u00f6nceki, merhaba d\u00fcnya \u00f6rne\u011finin ayn\u0131s\u0131. Ard\u0131ndan el yordam\u0131 ile yazd\u0131\u011f\u0131m\u0131z \u00a0DummyDelayMs fonksiyonuna de\u011fineyim.<\/p>\n<pre class=\"lang:c decode:true\" title=\"main.cpp\">static void DummyDelayMs(unsigned int delay_ms)\n{\n    unsigned long cnt=0;\n    unsigned long delay_limit_ms= delay_ms*(F_OSC\/120000);\n    for(cnt=0;cnt&lt;delay_limit_ms;cnt++);\n}<\/pre>\n<p>Bu fonksiyonun i\u015fi, cnt de\u011fi\u015fkeninin de\u011ferini insafs\u0131zca ve ahlaks\u0131zca art\u0131rarak CPU&#8217;nun di\u011fer i\u015fleri yapmas\u0131n\u0131 engellemek. Bu da h\u00f6d\u00fck\u00e7e bir beklemeye sebep oluyor. \u00a0\u00c7al\u0131\u015f\u0131yor mu? \u00c7al\u0131\u015f\u0131yor! Oradaki 120000 say\u0131s\u0131n\u0131 empirik olarak buluyoruz. Proteusta bir OSC kullan\u0131p zaman\u0131 \u00f6l\u00e7erek bulmak m\u00fcmk\u00fcn. Hesapla kitapla da yakla\u015f\u0131k olarak bulmak m\u00fcmk\u00fcnd\u00fcr. Neyse biz i\u015fimize devam edelim. A\u015fa\u011f\u0131daki kod\u00a0ise kara\u015fim\u015fek i\u015fini yapmaktad\u0131r.<\/p>\n<pre class=\"lang:c decode:true\" title=\"main.cpp\">  while(1)\n    {\n        for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&lt;&lt;1;\n            DummyDelayMs(100);\n        }\n         for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&gt;&gt;1;\n            DummyDelayMs(100);\n        }\n    }<\/pre>\n<p>100ms&#8217;de bir led bir kayd\u0131r\u0131l\u0131yor. Bu kodun \u00e7\u0131kt\u0131s\u0131 ise a\u015fa\u011f\u0131daki gibi oluyor \ud83d\ude42<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-416\" src=\"https:\/\/i0.wp.com\/ozenozkaya.com\/blog\/wp-content\/uploads\/ks.gif?resize=546%2C291\" alt=\"ks\" width=\"546\" height=\"291\" \/><\/p>\n<p>Bu yaz\u0131 bu kadarc\u0131k olsun \ud83d\ude42 Ba\u015fka bir yaz\u0131da devam edece\u011fiz.<\/p>\n<a href=\"http:\/\/ozenozkaya.com\/blog\/?p=403\" class=\"su-button su-button-style-3d\" style=\"color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:5px\" target=\"_self\"><span style=\"color:#FFFFFF;padding:6px 16px;font-size:13px;line-height:20px;border-color:#6cadf4;border-radius:5px;text-shadow:none\"><i class=\"sui sui-arrow-circle-o-left\" style=\"font-size:13px;color:#FFFFFF\"><\/i> \u00d6nceki Sayfa<\/span><\/a> \u00a0<a href=\"http:\/\/ozenozkaya.com\/blog\/?p=422\" class=\"su-button su-button-style-3d\" style=\"color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:5px\" target=\"_self\"><span style=\"color:#FFFFFF;padding:6px 16px;font-size:13px;line-height:20px;border-color:#6cadf4;border-radius:5px;text-shadow:none\"><i class=\"sui sui-arrow-circle-right\" style=\"font-size:13px;color:#FFFFFF\"><\/i> Sonraki Sayfa<\/span><\/a>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhabalar,\u00a0bir \u00f6nceki yaz\u0131m\u0131zda\u00a0\u00a0PIC i\u00e7in yazd\u0131\u011f\u0131m\u0131z bir merhaba d\u00fcnya kodunun i\u00e7ini d\u0131\u015f\u0131n\u0131 halla\u00e7 pamu\u011funa \u00e7evirmi\u015f ve say\u0131s\u0131z ibretlerle keyiflenmi\u015ftik. Bu yaz\u0131m\u0131zda da PIC16&#8217;n\u0131n bir pinini nas\u0131l giri\u015f yapar\u0131z, nas\u0131l \u00e7\u0131k\u0131\u015f yapar\u0131z, bir giri\u015f pininden nas\u0131l de\u011fer okuruz, bir \u00e7\u0131k\u0131\u015f pinine nas\u0131l de\u011fer yazar\u0131z gibi i\u015flemlere de\u011finece\u011fiz \ud83d\ude42 S\u00f6z\u00fcn \u00f6z\u00fc, hayat\u0131 bir dizi gerilimsel i\u015faretle m\u0131nc\u0131klayaca\u011f\u0131z \ud83d\ude42 <a class=\"read-more\" href=\"http:\/\/ozenozkaya.com\/blog\/?p=414\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_tr_post_content":"Merhabalar,\u00a0bir \u00f6nceki <a href=\"http:\/\/ozenozkaya.com\/blog\/?p=403\" target=\"_blank\">yaz\u0131m\u0131zda\u00a0<\/a>\u00a0PIC i\u00e7in yazd\u0131\u011f\u0131m\u0131z bir merhaba d\u00fcnya kodunun i\u00e7ini d\u0131\u015f\u0131n\u0131 halla\u00e7 pamu\u011funa \u00e7evirmi\u015f ve say\u0131s\u0131z ibretlerle keyiflenmi\u015ftik. Bu yaz\u0131m\u0131zda da PIC16'n\u0131n bir pinini nas\u0131l giri\u015f yapar\u0131z, nas\u0131l \u00e7\u0131k\u0131\u015f yapar\u0131z, bir giri\u015f pininden nas\u0131l de\u011fer okuruz, bir \u00e7\u0131k\u0131\u015f pinine nas\u0131l de\u011fer yazar\u0131z gibi i\u015flemlere de\u011finece\u011fiz :) S\u00f6z\u00fcn \u00f6z\u00fc, hayat\u0131 bir dizi gerilimsel i\u015faretle m\u0131nc\u0131klayaca\u011f\u0131z :)\n\n[su_box title=\"Sosyal Mesaj\" style=\"soft\" box_color=\"#a7e0a6\"]Malumunuz bu yaz\u0131m \u00f6ncekilere nazaran epey gecikti. Ciddi bir ara vermi\u015f oldum ancak ger\u00e7ekten\u00a0yo\u011fun bir d\u00f6nemi geride b\u0131rakm\u0131\u015f oldu\u011fumu belirtip, aff\u0131n\u0131za s\u0131\u011f\u0131narak yaz\u0131 dizilerine devam ediyorum.[\/su_box]\n\n\u015eimdi, yine bir k\u00fct\u00fcphane kullanmadan (ya da sadece kendi yazd\u0131\u011f\u0131m\u0131z k\u00fct\u00fcphaneleri kullanarak) bir kara\u015fim\u015fek kodu yazal\u0131m =) Kara\u015fim\u015fek kodu me\u015fhurdur dostlar =) es ge\u00e7meyelim!\n\nT\u0131pk\u0131 PIC mikrodentleyicilerinin bizler i\u00e7in \"ara\u00e7\" olmas\u0131 gibi, kara\u015fim\u015fek kodu da anlatmak istediklerimizi anlatmak \u00fczere kullanaca\u011f\u0131m\u0131z bir ara\u00e7 olacak. Amac\u0131m\u0131z ibretleri birer birer kapmak. S\u00f6z\u00fc sak\u0131z edip uzatmadan hemen kodumuzu yazal\u0131m.\n\n<pre class=\"lang:c decode:true\" title=\"main.cpp\">\/* \n * File:   main.c\n * Author: ozenozkaya\n *\n * Created on 02 Haziran 2015 Sali, 12:47\n *\/\n\n#define F_OSC (1000000UL)\n\n#define REG_TRISB (*( volatile unsigned char*)0x086)\n#define REG_PORTB (*( volatile unsigned char*)0x006)\n\nstatic void InitializeLedArray(void);\nstatic void DummyDelayMs(unsigned int delay_ms);\n\n\nvoid main() {\n    unsigned char led_index=0;\n    InitializeLedArray();\n    while(1)\n    {\n        for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&lt;&lt;1;\n            DummyDelayMs(100);\n        }\n         for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&gt;&gt;1;\n            DummyDelayMs(100);\n        }\n    }\n}\n\nstatic void InitializeLedArray(void)\n{\n    REG_TRISB = 0;\n    REG_PORTB = 1;\n    DummyDelayMs(100);\n}\n\nstatic void DummyDelayMs(unsigned int delay_ms)\n{\n    unsigned long cnt=0;\n    unsigned long delay_limit_ms= delay_ms*(F_OSC\/120000);\n    for(cnt=0;cnt&lt;delay_limit_ms;cnt++);\n}\n\n<\/pre>\n\nEvet efendim kodumuz yukar\u0131da yer ald\u0131\u011f\u0131 gibi. \u00c7\u0131kt\u0131s\u0131n\u0131 g\u00f6stermeden \u00f6nce, dilerseniz kodu bir a\u00e7\u0131klayay\u0131m. \u0130lk a\u015famada bekletme (delay) i\u015flemlerini yapabilmek i\u00e7in \u00e7al\u0131\u015fma frekans\u0131n\u0131 giriyoruz. Buna g\u00f6re \u00e7al\u0131\u015fma frekans\u0131 1.000.000 Hz yani 1MHZ olarak a\u015fa\u011f\u0131daki gibi belirleniyor.\n\n<pre class=\"lang:c decode:true\">#define F_OSC (1000000UL)<\/pre>\n\nArd\u0131ndan, bir \u00f6nceki yaz\u0131m\u0131zda anlatt\u0131\u011f\u0131m\u0131z \u00fczere kendi \u00e7abalar\u0131m\u0131zla register tan\u0131m\u0131n\u0131 yap\u0131yoruz. Malum bu yaz\u0131 dizisinde bir hedef de PIC'i bahane edip, bir mikrokontrol\u00f6re k\u00fct\u00fcphane nas\u0131l yaz\u0131l\u0131r onu da \u00f6\u011frenmek. \u00d6nceki yaz\u0131da myTRISB diye yapt\u0131\u011f\u0131m\u0131z register tan\u0131m\u0131 A\u011fao\u011flu MyTRISB projesi ile isim benzerli\u011fi g\u00f6stermesin diye isimlendirmeyi birazc\u0131k de\u011fi\u015ftirdik :P\n\n<pre class=\"lang:c decode:true\">#define REG_TRISB (*( volatile unsigned char*)0x086)\n#define REG_PORTB (*( volatile unsigned char*)0x006)<\/pre>\n\nBunlar malumunuz; efektif \u015fekilde tan\u0131mlanm\u0131\u015f k\u00fct\u00fckler. Ben afedersiniz k\u00fct\u00fck diyorum ama onun \u0130ngilizcesi \"register\". Neyse bir sonraki a\u015famada main'e ge\u00e7ecek olursak \u00f6nce pin'lere ilk de\u011fer veriliyor ki o k\u0131s\u0131m zaten \u00f6nceki, merhaba d\u00fcnya \u00f6rne\u011finin ayn\u0131s\u0131. Ard\u0131ndan el yordam\u0131 ile yazd\u0131\u011f\u0131m\u0131z \u00a0DummyDelayMs fonksiyonuna de\u011fineyim.\n\n<pre class=\"lang:c decode:true\" title=\"main.cpp\">static void DummyDelayMs(unsigned int delay_ms)\n{\n    unsigned long cnt=0;\n    unsigned long delay_limit_ms= delay_ms*(F_OSC\/120000);\n    for(cnt=0;cnt&lt;delay_limit_ms;cnt++);\n}<\/pre>\n\nBu fonksiyonun i\u015fi, cnt de\u011fi\u015fkeninin de\u011ferini insafs\u0131zca ve ahlaks\u0131zca art\u0131rarak CPU'nun di\u011fer i\u015fleri yapmas\u0131n\u0131 engellemek. Bu da h\u00f6d\u00fck\u00e7e bir beklemeye sebep oluyor. \u00a0\u00c7al\u0131\u015f\u0131yor mu? \u00c7al\u0131\u015f\u0131yor! Oradaki 120000 say\u0131s\u0131n\u0131 empirik olarak buluyoruz. Proteusta bir OSC kullan\u0131p zaman\u0131 \u00f6l\u00e7erek bulmak m\u00fcmk\u00fcn. Hesapla kitapla da yakla\u015f\u0131k olarak bulmak m\u00fcmk\u00fcnd\u00fcr. Neyse biz i\u015fimize devam edelim. A\u015fa\u011f\u0131daki kod\u00a0ise kara\u015fim\u015fek i\u015fini yapmaktad\u0131r.\n\n<pre class=\"lang:c decode:true\" title=\"main.cpp\">  while(1)\n    {\n        for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&lt;&lt;1;\n            DummyDelayMs(100);\n        }\n         for(led_index=0; led_index&lt;7; led_index++)\n        {\n            REG_PORTB=REG_PORTB&gt;&gt;1;\n            DummyDelayMs(100);\n        }\n    }<\/pre>\n\n100ms'de bir led bir kayd\u0131r\u0131l\u0131yor. Bu kodun \u00e7\u0131kt\u0131s\u0131 ise a\u015fa\u011f\u0131daki gibi oluyor :)\n\n<img class=\"alignnone size-full wp-image-416\" src=\"http:\/\/ozenozkaya.com\/blog\/wp-content\/uploads\/ks.gif\" alt=\"ks\" width=\"546\" height=\"291\" \/>\n\nBu yaz\u0131 bu kadarc\u0131k olsun :) Ba\u015fka bir yaz\u0131da devam edece\u011fiz.\n\n[su_button url=\"http:\/\/ozenozkaya.com\/blog\/?p=403\" style=\"3d\"\u00a0icon=\"icon: arrow-circle-o-left\"]\u00d6nceki Sayfa[\/su_button] \u00a0[su_button url=\"http:\/\/ozenozkaya.com\/blog\/?p=422\" style=\"3d\" icon=\"icon: arrow-circle-right\"]Sonraki Sayfa[\/su_button]\n\n&nbsp;","_tr_post_name":"pic-programlama-4-giris-cikis-io-inputoutput-islemleri","_tr_post_excerpt":"","_tr_post_title":"PIC Programlama \u2013 4 \u2013 Giri\u015f \u00c7\u0131k\u0131\u015f (I\/O, Input\/Output) \u0130\u015flemleri","_en_post_content":"","_en_post_name":"","_en_post_excerpt":"","_en_post_title":"","edit_language":"tr","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[2,3],"tags":[],"class_list":["post-414","post","type-post","status-publish","format-standard","hentry","category-elektronik","category-gomulu-sistemler"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5gWM6-6G","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=414"}],"version-history":[{"count":0,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/414\/revisions"}],"wp:attachment":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=414"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}