------------118A813338C4A23F Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi Edson, I would say the simplest would be to use inline assembly, if the compiler doesn't allow 32 bit variables (which kind of surprising!). But it is possible to do a division function in C. It is less efficient, but will work. I attached a short C-program which does that on PC, but may need some modifications for CCS compiler. It divides the time values directly, without conversion to binary. The trick is to have special functions for a left shift and a subtraction. This is similar to BCD operations, where you do some correction after shift or subtraction. Subtraction is done once, so you may inline that function. And shifts can also be moved in only one place. After that, you can probably avoid using structures and pointers at all, to improve the size and speed of PIC code in result. Good luck! Nikolai ---- Original Message ---- From: Edson Brusque Sent: Friday, September 28, 2001 18:09:35 To: golovchenko@mail.ru Subj: [PIC]: How to make 24 bits calculations with 16 bits variables in C??? > Hello, > I'm using CCS-PCM and I need to do this calculation: > ///////////////////////////////////////////////////////// > byte a, b, c; // byte variables are unsigned 8 bits > byte x, y, z; > word xx, yy; // word variables are unsigned 16 bits > byte end_value; > xx = a * 6000 + b * 100 + c; > yy = x * 6000 + y * 100 + z; > end_value = yy * 255 / xx; > ///////////////////////////////////////////////////////// > The largest possible value for xx and yy in this application is 599999 > (a 24 bit value). > The variables a,b,c and x,y,z holds two time values as > minutes,seconds,cents. > The calculation is 24 bit, but the result is only 8 bit. Any ideas on > how can I make this using only 8 bits and 16 bits variables? > Thank you VERY much, > Brusque > ----------------------------------- > Edson Brusque > Research and Development > C.I.Tronics Lighting Designers Ltda > (47) 323-2138 > Blumenau - SC - Brazil > www.citronics.com.br > ----------------------------------- > -- > http://www.piclist.com hint: To leave the PICList > mailto:piclist-unsubscribe-request@mitvma.mit.edu ------------118A813338C4A23F Content-Type: application/octet-stream; name="main.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="main.c" I2luY2x1ZGUgPHN0ZGlvLmg+DQoNCi8qIGRlZmluZSBub24tc3RhbmRhcmQgaW50ZWdlciB0eXBl cyAqLw0KI2RlZmluZSBieXRlIHVuc2lnbmVkIGNoYXINCi8qICNkZWZpbmUgd29yZCB1bnNpZ25l ZCBzaG9ydCBpbnQgKi8NCg0KLyogZGVmaW5lIHRpbWUgc3RydWN0dXJlICovDQpzdHJ1Y3QgdGlt ZQ0Kew0KICAgIGJ5dGUgbWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbnV0ZXMs IDAuLjk5ICovDQogICAgYnl0ZSBzZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2Vj b25kcywgMC4uNTkgKi8NCiAgICBieXRlIGh1bjsgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBodW5kcmVkdGggb2YgYSBzZWNvbmQsIDAuLjk5ICovDQp9Ow0KDQovKiBtdWx0aXBseSB0aW1l IGJ5IDIgKGxlZnQgc2hpZnQpICovDQp2b2lkIHRpbWVfc2hpZnRfbGVmdCAoc3RydWN0IHRpbWUq IHQpDQp7DQogICAgYnl0ZSBjYXJyeSA9IDA7DQoNCiAgICAvKiBtdWx0aXBseSBodW5kcmVkdGhz IGJ5IDIgKi8NCiAgICB0LT5odW4gPDw9IDE7DQogICAgaWYodC0+aHVuID49IDEwMCkNCiAgICB7 DQogICAgICAgIC8qIG92ZXJmbG93IGRldGVjdGVkLiBQcm9wYWdhdGUgaXQgdG8gc2Vjb25kcw0K ICAgICAgICAgICBhbmQgY29ycmVjdCBodW5kcmVkdGhzICovDQogICAgICAgIGNhcnJ5ID0gMTsN CiAgICAgICAgdC0+aHVuIC09IDEwMDsNCiAgICB9DQogICAgLyogbXVsdGlwbHkgc2Vjb25kcyBi eSAyICovDQogICAgdC0+c2VjIDw8PSAxOw0KICAgIHQtPnNlYyArPSBjYXJyeTsNCiAgICBjYXJy eSA9IDA7DQogICAgaWYodC0+c2VjID49IDYwICkNCiAgICB7DQogICAgICAgIC8qIG92ZXJmbG93 IGRldGVjdGVkIGluIHNlY29uZHMuIFByb3BhZ2F0ZSBpdCB0bw0KICAgICAgICAgICBtaW51dGVz IGFuZCBjb3JyZWN0IHNlY29uZHMgKi8NCiAgICAgICAgY2FycnkgPSAxOw0KICAgICAgICB0LT5z ZWMgLT0gNjA7DQogICAgfQ0KICAgIC8qIG11bHRpcGx5IG1pbnV0ZXMgYnkgMiAoYW5kIGlnbm9y ZSBvdmVyZmxvdykgKi8NCiAgICB0LT5taW4gPDw9IDE7DQogICAgdC0+bWluICs9IGNhcnJ5Ow0K fQ0KDQovKiBzdWJ0cmFjdCB0aW1lIHggLT0geSAqLw0Kdm9pZCB0aW1lX3N1YihzdHJ1Y3QgdGlt ZSogeCwgc3RydWN0IHRpbWUqIHkpDQp7DQogICAgYnl0ZSBib3Jyb3cgPSAwOw0KICAgIC8qIHN1 YnRyYWN0IGh1bmRyZWR0aHMgKi8NCiAgICB4LT5odW4gLT0geS0+aHVuOw0KICAgIGlmKHgtPmh1 biAmIDB4ODApDQogICAgew0KICAgICAgICAvKiBib3Jyb3cgZGV0ZWN0ZWQgKi8NCiAgICAgICAg Ym9ycm93ID0gMTsNCiAgICAgICAgLyogY29ycmVjdCByZXN1bHQuIE5lZ2F0aXZlIG51bWJlcnMg bGlrZSAoMjU2LXgpDQogICAgICAgIHNob3VsZCBiZSB0cmVhdGVkIGFzICgxMDAteCksIHdoaWNo IG1lYW5zIHdlIG5lZWQNCiAgICAgICAgdG8gc3VidHJhY3QgdGhlIGRpZmZlcmVuY2UgZXF1YWwg dG8gMTU2ICovDQogICAgICAgIHgtPmh1biAtPSAxNTY7IA0KICAgIH0NCiAgICAvKiBzdWJ0cmFj dCBzZWNvbmRzICovDQogICAgeC0+c2VjIC09IHktPnNlYyArIGJvcnJvdzsNCiAgICBib3Jyb3cg PSAwOw0KICAgIGlmKHgtPnNlYyAmIDB4ODApDQogICAgew0KICAgICAgICAvKiBib3Jyb3cgZGV0 ZWN0ZWQgKi8NCiAgICAgICAgYm9ycm93ID0gMTsNCiAgICAgICAgLyogY29ycmVjdCByZXN1bHQu IE5lZ2F0aXZlIG51bWJlcnMgbGlrZSAoMjU2LXgpDQogICAgICAgIHNob3VsZCBiZSB0cmVhdGVk IGFzICg2MC14KSwgd2hpY2ggbWVhbnMgd2UgbmVlZA0KICAgICAgICB0byBzdWJ0cmFjdCB0aGUg ZGlmZmVyZW5jZSBlcXVhbCB0byAxOTYgKi8NCiAgICAgICAgeC0+c2VjIC09IDE5NjsNCiAgICB9 DQogICAgLyogc3VidHJhY3QgbWludXRlcyAqLw0KICAgIHgtPm1pbiAtPSB5LT5taW4gKyBib3Jy b3c7DQogICAgLyogaWdub3JlIGJvcnJvdyBpbiBtaW51dGVzICovIA0KfQ0KDQovKiBkaXZpZGUg dGltZSBieSB0aW1lLiB4ID0gZmxvb3IgKDI1NiAqIHggLyB5KS4NCiAgIHggaXMgbW9kaWZpZWQh ICAqLw0KYnl0ZSB0aW1lX2RpdmlkZSAoc3RydWN0IHRpbWUqIHgsIHN0cnVjdCB0aW1lKiB5KQ0K ew0KICAgIHN0cnVjdCB0aW1lIHRlbXA7ICAgICAgICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSBs b2NhdGlvbiAqLw0KICAgIGJ5dGUgaTsNCiAgICBieXRlIHJlc3VsdCA9IDA7DQogICAgDQogICAg LyogYWxpZ24gZGl2aWRlbmQgKHgpLCBzbyB3ZSBzdGFydCB0ZXN0aW5nIHRoZSANCiAgICAgICBj b3JyZWN0IHJlc3VsdCBiaXQgKi8NCiAgICB0aW1lX3NoaWZ0X2xlZnQoeCk7DQogICAgLyogbm93 LCB0aGUgZGl2aXNpb24gbG9vcCAqLw0KICAgIGZvcihpID0gODsgaTsgaS0tKQ0KICAgIHsNCiAg ICAgICAgLyogc2F2ZSBjdXJyZW50IGRpdmlkZW5kICh4KSAqLw0KICAgICAgICB0ZW1wLmh1biA9 IHgtPmh1bjsNCiAgICAgICAgdGVtcC5zZWMgPSB4LT5zZWM7DQogICAgICAgIHRlbXAubWluID0g eC0+bWluOw0KICAgICAgICAvKiB0cnkgdG8gc3VidHJhY3QgZGl2aXNvciB5IGZyb20gZGl2aWRl bmQgeCAqLw0KICAgICAgICB0aW1lX3N1Yih4LCB5KTsNCiAgICAgICAgLyogcHJlcGFyZSByZXN1 bHQgKi8NCiAgICAgICAgcmVzdWx0IDw8PSAxOw0KICAgICAgICBpZih4LT5taW4gJiAweDgwKQ0K ICAgICAgICB7DQogICAgICAgICAgICAvKiB4IGJlY2FtZSBuZWdhdGl2ZSwgcmVzdG9yZSBpdCwg YW5kIHdyaXRlIGEgemVybyBiaXQgdG8gDQogICAgICAgICAgICAgICByZXN1bHQgKi8NCiAgICAg ICAgICAgIHgtPmh1biA9IHRlbXAuaHVuOw0KICAgICAgICAgICAgeC0+c2VjID0gdGVtcC5zZWM7 DQogICAgICAgICAgICB4LT5taW4gPSB0ZW1wLm1pbjsNCiAgICAgICAgICAgIC8qIHJlc3VsdCBi aXQgaXMgemVybyBhbHJlYWR5ICovDQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7 DQogICAgICAgICAgICAvKiB4IGlzIHplcm8gb3IgbW9yZSwgd3JpdGUgYSBzZXQgYml0IHRvIHJl c3VsdCAqLw0KICAgICAgICAgICAgcmVzdWx0IHw9IDE7DQogICAgICAgIH0NCiAgICAgICAgLyog bm93IHNoaWZ0IHRoZSBkaXZpZGVuZCAoeCkgbGVmdCAqLw0KICAgICAgICB0aW1lX3NoaWZ0X2xl ZnQoeCk7DQogICAgfQ0KICAgIHJldHVybiAocmVzdWx0KTsNCn0NCg0KaW50IG1haW4gKHZvaWQp DQp7DQogICAgc3RydWN0IHRpbWUgeHggPSB7MCwgNywgM307DQogICAgc3RydWN0IHRpbWUgeXkg PSB7MCwgOCwgMH07DQoNCg0KICAgIHByaW50ZiAoIiVkXG4iLCB0aW1lX2RpdmlkZSgmeHgsICZ5 eSkpOw0KDQogICAgcmV0dXJuKDApOw0KfQ== ------------118A813338C4A23F-- -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics