https://wiki.koeln.ccc.de/index.php?title=U23_2007/Evil_Solutions/dimmer.c&feed=atom&action=history
U23 2007/Evil Solutions/dimmer.c - Revision history
2024-03-29T15:37:30Z
Revision history for this page on the wiki
MediaWiki 1.30.1
https://wiki.koeln.ccc.de/index.php?title=U23_2007/Evil_Solutions/dimmer.c&diff=13682&oldid=prev
Evil Operator: New page: <pre> #include <avr/io.h> void ins_schieb (char); void delay (uint8_t); uint8_t is_Set (uint8_t, char); int main(void) { DDRA = 0xFF; // Set OE PORTA = 0x08 ; ins_schieb(0); dela...
2007-06-04T17:24:05Z
<p>New page: <pre> #include <avr/io.h> void ins_schieb (char); void delay (uint8_t); uint8_t is_Set (uint8_t, char); int main(void) { DDRA = 0xFF; // Set OE PORTA = 0x08 ; ins_schieb(0); dela...</p>
<p><b>New page</b></p><div><pre><br />
#include <avr/io.h><br />
<br />
void ins_schieb (char);<br />
void delay (uint8_t);<br />
uint8_t is_Set (uint8_t, char);<br />
<br />
int main(void) {<br />
<br />
DDRA = 0xFF;<br />
// Set OE<br />
PORTA = 0x08 ;<br />
<br />
ins_schieb(0);<br />
<br />
delay(128);<br />
<br />
uint8_t a, b, c;<br />
<br />
<br />
while (1) {<br />
<br />
<br />
// aufblenden<br />
for (b = 0 ; b < 20 ; b++) {<br />
for (c = 0; c < 20 ; c++) {<br />
// anmachen<br />
for (a = 0; a <= b ; a++) {<br />
ins_schieb(0x01);<br />
}<br />
for (a = 20-b; a > 0; a--) {<br />
ins_schieb(0x80);<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
// abblenden<br />
for (b = 20 ; b > 0 ; b--) {<br />
for (c = 0; c < 20 ; c++) {<br />
// anmachen<br />
for (a = 0; a <= b ; a++) {<br />
ins_schieb(0x01);<br />
}<br />
for (a = 20-b; a > 0; a--) {<br />
ins_schieb(0x80);<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
return 0;<br />
}<br />
<br />
void ins_schieb ( char eingabe) {<br />
<br />
uint16_t i;<br />
for ( i = 0 ; i <= 16 ; i++) {<br />
// Data<br />
<br />
if ( i % 2) {<br />
if ( is_Set( ((int) i/2), eingabe )){<br />
PORTA |= (1 << 1);<br />
}else {<br />
PORTA &= ~ (1 << 1);<br />
}<br />
}<br />
<br />
// Clock<br />
if ( i % 2 ) {<br />
PORTA |= (1 << 2 );<br />
} else {<br />
PORTA &= ~ (1 << 2 );<br />
}<br />
}<br />
<br />
// Set and unset Strobe<br />
PORTA |= (1 << 0 ) ;<br />
PORTA &= ~ (1 << 0 ) ;<br />
}<br />
<br />
uint8_t is_Set (uint8_t bit, char eingabe) {<br />
<br />
uint8_t op2 = eingabe & (~ (1 << bit));<br />
uint8_t erg = eingabe ^ op2; <br />
<br />
if (erg > 0)<br />
return 1;<br />
return 0;<br />
}<br />
<br />
void delay(uint8_t adelay){<br />
uint16_t b;<br />
uint16_t a;<br />
<br />
for (a = 0 ; a < adelay; a++)<br />
for (b = 0; b < 0xFF ; b++) {<br />
PORTB = 0x00;<br />
/* nix */<br />
}<br />
}<br />
<br />
</pre><br />
<br />
[[Category:U23 2007]]</div>
Evil Operator