بسم الله الرحمن الرحیم
صرفه نظر از هر کمپایلر یا محیط برنامه نویسی همه دوستان می دانند که دریافت وارسال سریال PIC عملاٌ با تنظیمات رجیستر های :
TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h)
RCSTA: RECEIVE STATUS AND CONTROL REGISTER (ADDRESS 18h)
و سایر رجیسترهای دیگر همچون USART Baud Rate Generator(BRG) و سایر موارد دیگر ...
انجام می شود. چه کاربر به صورت دستی این کار را انجام دهد و چه اینکه کامپایلر این موارد را اتوماتیک برای کاربر منظور کند.
در تنظیماتی که کاربران برای TXSTA و RCSTA بر روی بیت های ششم و بیت های صفر (اولین بیت) هر دو رجیستر قرار می دهند ؛ برای تعیین حالاتی است که شما به جای ارسال / دریافت 8 بیت ، می خواهید یک بیت توازن یا Parity را توام با 8 بیت ارسال/دریافت کنید که مجموعا میشود : 9 بیت

یعنی (ارسال / دریافت) 9 بیتی. یا حتی فراتر از آن (ارسال / دریافت) های با تعداد بیت های متفاوت دیگری که همگی شامل بیت توازن یا Parity باشند.
با احترام و به خلاصه عرض شود که در داخل تمام راهنمای قطعات میکروچیپ آمده است: (متن زیر را از پی دی اف کپی کردم)
اما با تنظیم TXSTA=64HEX
برای ارسال 9 بیت ، بیت توازن به داخل کلمه بعدی می رود ، اگر Parity قبلی برابر 1 باشد . عدد بعدی همیشه با 80HEX جمع می شود. یعنی بیت 7 کلمه بعدی همیشه 1 یک است اگر Parity قبلی یک باشد و به همین ترتیب برای کلمه بعدی تغییر وضعیت به وجود می آید اگر Parity قبلی 1 شده باشد.
چه نکته ای هست که من نمی دانم و رعایت نمی کنم؟ که به آن دلیل بیت توازن در زمان خودش ارسال نمی شود.
صرفه نظر از هر کمپایلر یا محیط برنامه نویسی همه دوستان می دانند که دریافت وارسال سریال PIC عملاٌ با تنظیمات رجیستر های :
TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h)
RCSTA: RECEIVE STATUS AND CONTROL REGISTER (ADDRESS 18h)
و سایر رجیسترهای دیگر همچون USART Baud Rate Generator(BRG) و سایر موارد دیگر ...
انجام می شود. چه کاربر به صورت دستی این کار را انجام دهد و چه اینکه کامپایلر این موارد را اتوماتیک برای کاربر منظور کند.
در تنظیماتی که کاربران برای TXSTA و RCSTA بر روی بیت های ششم و بیت های صفر (اولین بیت) هر دو رجیستر قرار می دهند ؛ برای تعیین حالاتی است که شما به جای ارسال / دریافت 8 بیت ، می خواهید یک بیت توازن یا Parity را توام با 8 بیت ارسال/دریافت کنید که مجموعا میشود : 9 بیت

یعنی (ارسال / دریافت) 9 بیتی. یا حتی فراتر از آن (ارسال / دریافت) های با تعداد بیت های متفاوت دیگری که همگی شامل بیت توازن یا Parity باشند.
با احترام و به خلاصه عرض شود که در داخل تمام راهنمای قطعات میکروچیپ آمده است: (متن زیر را از پی دی اف کپی کردم)
کد:
In order to select 9-bit transmission, transmit bit TX9 (TXSTA<6>) should be set and the ninth bit should be written to TX9D (TXSTA<0>). The ninth bit must be written before writing the 8-bit data to the TXREG register. This is because a data write to the TXREG register can result in an immediate transfer of the data to the TSR register (if the TSR is empty). In such a case, an incorrect ninth data bit may be loaded in the TSR register.
برای ارسال 9 بیت ، بیت توازن به داخل کلمه بعدی می رود ، اگر Parity قبلی برابر 1 باشد . عدد بعدی همیشه با 80HEX جمع می شود. یعنی بیت 7 کلمه بعدی همیشه 1 یک است اگر Parity قبلی یک باشد و به همین ترتیب برای کلمه بعدی تغییر وضعیت به وجود می آید اگر Parity قبلی 1 شده باشد.
چه نکته ای هست که من نمی دانم و رعایت نمی کنم؟ که به آن دلیل بیت توازن در زمان خودش ارسال نمی شود.
دیدگاه