/** * \internal Calculate asynchronous baudrate value (UART) */ enum status_code _sercom_get_async_baud_val( const uint32_t baudrate, const uint32_t peripheral_clock, uint16_t *const baudval, enum sercom_asynchronous_operation_mode mode, enum sercom_asynchronous_sample_num sample_num) { /* Temporary variables */ uint64_t ratio = 0; uint64_t scale = 0; uint64_t baud_calculated = 0; uint8_t baud_fp; uint32_t baud_int = 0; uint64_t temp1, temp2; /* Check if the baudrate is outside of valid range */ if ((baudrate * sample_num) > peripheral_clock) { /* Return with error code */ return STATUS_ERR_BAUDRATE_UNAVAILABLE; } if(mode == SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC) { /* Calculate the BAUD value */ temp1 = ((sample_num * (uint64_t)baudrate) << SHIFT); ratio = long_division(temp1, peripheral_clock); scale = ((uint64_t)1 << SHIFT) - ratio; baud_calculated = (65536 * scale) >> SHIFT; } else if(mode == SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL) {
int main () { int a , b,n ; char ch,r[100] ; printf("Enter 1 or 2: "); scanf ("%c",&ch); switch(ch) { case '1' : printf("Enter a: "); scanf("%d",&a); printf("Enter b: "); scanf("%d",&b); long_division(a%b,b,r); printf("Value of %d/%d: %d.%s\n",a,b,a/b,r); break; printf("Enter n: "); scanf("%d",&n); longest_cycle(n); case '2' : break; } }
int main(void) { int quot, rem; long_division(40, 3, ", &rem); printf("40 divided by 3 yields quotient %d ", quot); printf("and remainder %d\n", rem); return (0); }