CON _xtlfreq = 20_000_000 _clkfreq = 160_000_000 CS = 10 RST = 12 DC = 11 CLK = 9 DATA = 8 OBJ OLED : "test_AsmDrv" ''OLED dedicated SPI engine in Assembly PUB SPI_DEMO()|h,i,j,k,q,r,s,count OLED.Init(CS,DC,DATA,CLK,RST) OLED.AutoUpdateOff() repeat OLED.clearDisplay() sendsplash() waitms(3000) OLED.clearDisplay() OLED.clearDisplay() count := 0 repeat count from 0 to 80 OLED.line(count,0,95,63,OLED.Aqua) OLED.line(0,63,95,0,OLED.Green) OLED.boxFillOn() OLED.box($2,$3,$15,$12,OLED.Yellow,OLED.Red) OLED.boxFillOff() OLED.box(28,22,68,42,OLED.White,OLED.Black) OLED.copy(28,22,68,42,0,43) waitms(3000) OLED.clearDisplay() OLED.write1x6String(String("P1"),2,0,0,OLED.Yellow,OLED.BLUE) ' (string, string len,col,row,Foreground Color, Background Color) OLED.write1x6String(String("Font"),4,0,32,OLED.Red,OLED.Green) OLED.write1x6String(String("!"),1,64,15,OLED.BLUE,OLED.Yellow) waitms(3000) OLED.clearDisplay() OLED.write1x16String(String("Spin2 Code!"),10,12,0,OLED.Aqua,OLED.Black) OLED.write1x16String(String("W00T! W00T!"),11,8,10,OLED.Aqua,OLED.Black) waitms(200) repeat 10 OLED.write1x16String(String("Spin2 Code!"),10,12,0,OLED.Aqua,OLED.Black) OLED.write1x16String(String("W00T! W00T!"),11,8,10,OLED.Aqua,OLED.Black) waitms(100) OLED.write1x16String(String("Spin2 Code!"),10,12,0,OLED.Pink,OLED.Black) OLED.write1x16String(String("W00T! W00T!"),11,8,10,OLED.Pink,OLED.Black) waitms(100) OLED.startscrollright(0,10) repeat 18 OLED.write1x16String(String("Spin2 Code!"),10,12,0,OLED.Aqua,OLED.Black) OLED.write1x16String(String("W00T! W00T!"),11,8,10,OLED.Aqua,OLED.Black) waitms(100) OLED.write1x16String(String("Spin2 Code!"),10,12,0,OLED.Pink,OLED.Black) OLED.write1x16String(String("W00T! W00T!"),11,8,10,OLED.Pink,OLED.Black) waitms(100) OLED.stopscroll() OLED.write1x16String(String("Spin2 Code!"),10,12,0,OLED.Aqua,OLED.Black) OLED.write1x16String(String("W00T! W00T!"),11,8,10,OLED.Aqua,OLED.Black) waitms(200) bars() waitms(2000) OLED.invertDisplay(true) waitms(2000) OLED.invertDisplay(false) PUB getSplash(): rt 'Get the address of the Beanie Propeller Splash Screen return @splash PUB sendsplash()|i,tmp i := 68 ''Writes the screen buffer to the memory of the display OLED.ssd1331_command($E3) ' NOP OLED.ssd1331_command($E3) ' NOP OLED.ssd1331_command(OLED.SSD1331_CMD_SETCOLUMN) ' Set X OLED.ssd1331_command($0) OLED.ssd1331_command(95) OLED.ssd1331_command(OLED.SSD1331_CMD_SETROW) ' Set Y OLED.ssd1331_command($0) OLED.ssd1331_command(63) OLED.ssd1331_command($A1) OLED.ssd1331_command($0) OLED.ssd1331_command($A2) OLED.ssd1331_command($0) repeat until i > 12358 '12288 OLED.ssd1331_Data(splash[i + 1]) OLED.ssd1331_Data(splash[i]) i++ i++ PUB bars()|i,tmp i := 0 OLED.ssd1331_command($E3) ' NOP OLED.ssd1331_command($E3) ' NOP OLED.ssd1331_command(OLED.SSD1331_CMD_SETCOLUMN) ' Set X OLED.ssd1331_command($0) OLED.ssd1331_command(95) OLED.ssd1331_command(OLED.SSD1331_CMD_SETROW) ' Set Y OLED.ssd1331_command($0) OLED.ssd1331_command(63) repeat until i > 2016 OLED.ssd1331_Data($F8) 'RG color value 5R6G5B OLED.ssd1331_Data($00) 'GB color value i++ i :=0 repeat until i > 2016 OLED.ssd1331_Data($7) 'RG color value 5R6G5B OLED.ssd1331_Data($E0) 'GB color value i++ i :=0 repeat until i > 2108 OLED.ssd1331_Data($0) 'RG color value 5R6G5B OLED.ssd1331_Data($1F) 'GB color value i++ DAT 'Beanie splash Screen (12Kbytes) Remove this to save Hub RAM orgh splash file "P2Beanie16.bmp"