⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdsd1335.lst

📁 AVR单片机
💻 LST
📖 第 1 页 / 共 5 页
字号:
    17C8 855C      LDD	R21,Y+12
    17C9 C006      RJMP	0x17D0
    17CA 82A8      STD	Y+0,R10
    17CB 019A      MOVW	R18,R20
    17CC 0187      MOVW	R16,R14
    17CD DF6B      RCALL	_lcd_pixel
    17CE 5F4F      SUBI	R20,0xFF
    17CF 4F5F      SBCI	R21,0xFF
    17D0 16C4      CP	R12,R20
    17D1 06D5      CPC	R13,R21
    17D2 F7BC      BGE	0x17CA
    17D3 9621      ADIW	R28,1
    17D4 940E 1ACE CALL	pop_xgsetF0FC
    17D6 9622      ADIW	R28,2
    17D7 9508      RET
_lcd_degree_line:
  ty                   --> R20
  tx                   --> R14
  fy                   --> R12
  fx                   --> R10
  show                 --> Y,+23
  outer_radius         --> R22
  inner_radius         --> R12
  degree               --> R20
  y                    --> Y,+15
  x                    --> R14
    17D8 933A      ST	R19,-Y
    17D9 932A      ST	R18,-Y
    17DA 940E 1AD9 CALL	push_xgsetF0FC
    17DC 0178      MOVW	R14,R16
    17DD 9725      SBIW	R28,5
    17DE 8949      LDD	R20,Y+17
    17DF 895A      LDD	R21,Y+18
    17E0 88CB      LDD	R12,Y+19
    17E1 88DC      LDD	R13,Y+20
    17E2 896D      LDD	R22,Y+21
    17E3 897E      LDD	R23,Y+22
(0298) }
(0299) 
(0300) 
(0301) /***********************************************************************
(0302) Draws a line from x,y at given degree from inner_radius to outer_radius.
(0303) Set show to 1 to draw pixel, set to 0 to hide pixel.
(0304) ***********************************************************************/
(0305) void lcd_degree_line(int x, int y, int degree, int inner_radius, int outer_radius, unsigned char show)
(0306) {
(0307)   int fx,fy,tx,ty;
(0308)   fx = x + fround(inner_radius * sin(degree * 3.14 / 180));
    17E4 E900      LDI	R16,0x90
    17E5 E010      LDI	R17,0
    17E6 940E 1AAA CALL	elpm32
    17E8 0118      MOVW	R2,R16
    17E9 0129      MOVW	R4,R18
    17EA 018A      MOVW	R16,R20
    17EB 940E 1BF9 CALL	int2fp
    17ED 933A      ST	R19,-Y
    17EE 932A      ST	R18,-Y
    17EF 931A      ST	R17,-Y
    17F0 930A      ST	R16,-Y
    17F1 0181      MOVW	R16,R2
    17F2 0192      MOVW	R18,R4
    17F3 940E 1DFB CALL	fpmule2
    17F5 0118      MOVW	R2,R16
    17F6 0129      MOVW	R4,R18
    17F7 E80C      LDI	R16,0x8C
    17F8 E010      LDI	R17,0
    17F9 940E 1AAA CALL	elpm32
    17FB 933A      ST	R19,-Y
    17FC 932A      ST	R18,-Y
    17FD 931A      ST	R17,-Y
    17FE 930A      ST	R16,-Y
    17FF 0181      MOVW	R16,R2
    1800 0192      MOVW	R18,R4
    1801 940E 1C20 CALL	fpdiv2
    1803 940E 1FF2 CALL	_sinf
    1805 0118      MOVW	R2,R16
    1806 0129      MOVW	R4,R18
    1807 0186      MOVW	R16,R12
    1808 940E 1BF9 CALL	int2fp
    180A 925A      ST	R5,-Y
    180B 924A      ST	R4,-Y
    180C 923A      ST	R3,-Y
    180D 922A      ST	R2,-Y
    180E 940E 1DFB CALL	fpmule2
    1810 940E 201D CALL	_froundf
    1812 0118      MOVW	R2,R16
    1813 0129      MOVW	R4,R18
    1814 0187      MOVW	R16,R14
    1815 940E 1BF9 CALL	int2fp
    1817 925A      ST	R5,-Y
    1818 924A      ST	R4,-Y
    1819 923A      ST	R3,-Y
    181A 922A      ST	R2,-Y
    181B 940E 1B8F CALL	fpadd2
    181D 940E 1BCB CALL	fpint
    181F 0158      MOVW	R10,R16
(0309)   fy = y - fround(inner_radius * cos(degree * 3.14 / 180));
    1820 E900      LDI	R16,0x90
    1821 E010      LDI	R17,0
    1822 940E 1AAA CALL	elpm32
    1824 0118      MOVW	R2,R16
    1825 0129      MOVW	R4,R18
    1826 018A      MOVW	R16,R20
    1827 940E 1BF9 CALL	int2fp
    1829 933A      ST	R19,-Y
    182A 932A      ST	R18,-Y
    182B 931A      ST	R17,-Y
    182C 930A      ST	R16,-Y
    182D 0181      MOVW	R16,R2
    182E 0192      MOVW	R18,R4
    182F 940E 1DFB CALL	fpmule2
    1831 0118      MOVW	R2,R16
    1832 0129      MOVW	R4,R18
    1833 E80C      LDI	R16,0x8C
    1834 E010      LDI	R17,0
    1835 940E 1AAA CALL	elpm32
    1837 933A      ST	R19,-Y
    1838 932A      ST	R18,-Y
    1839 931A      ST	R17,-Y
    183A 930A      ST	R16,-Y
    183B 0181      MOVW	R16,R2
    183C 0192      MOVW	R18,R4
    183D 940E 1C20 CALL	fpdiv2
    183F 940E 1E2A CALL	_cosf
    1841 0118      MOVW	R2,R16
    1842 0129      MOVW	R4,R18
    1843 0186      MOVW	R16,R12
    1844 940E 1BF9 CALL	int2fp
    1846 925A      ST	R5,-Y
    1847 924A      ST	R4,-Y
    1848 923A      ST	R3,-Y
    1849 922A      ST	R2,-Y
    184A 940E 1DFB CALL	fpmule2
    184C 940E 201D CALL	_froundf
    184E 0118      MOVW	R2,R16
    184F 0129      MOVW	R4,R18
    1850 850F      LDD	R16,Y+15
    1851 8918      LDD	R17,Y+16
    1852 940E 1BF9 CALL	int2fp
    1854 925A      ST	R5,-Y
    1855 924A      ST	R4,-Y
    1856 923A      ST	R3,-Y
    1857 922A      ST	R2,-Y
    1858 940E 1BB2 CALL	fpsub2
    185A 940E 1BCB CALL	fpint
    185C 0168      MOVW	R12,R16
(0310)   tx = x + fround(outer_radius * sin(degree * 3.14 / 180));
    185D E900      LDI	R16,0x90
    185E E010      LDI	R17,0
    185F 940E 1AAA CALL	elpm32
    1861 0118      MOVW	R2,R16
    1862 0129      MOVW	R4,R18
    1863 018A      MOVW	R16,R20
    1864 940E 1BF9 CALL	int2fp
    1866 933A      ST	R19,-Y
    1867 932A      ST	R18,-Y
    1868 931A      ST	R17,-Y
    1869 930A      ST	R16,-Y
    186A 0181      MOVW	R16,R2
    186B 0192      MOVW	R18,R4
    186C 940E 1DFB CALL	fpmule2
    186E 0118      MOVW	R2,R16
    186F 0129      MOVW	R4,R18
    1870 E80C      LDI	R16,0x8C
    1871 E010      LDI	R17,0
    1872 940E 1AAA CALL	elpm32
    1874 933A      ST	R19,-Y
    1875 932A      ST	R18,-Y
    1876 931A      ST	R17,-Y
    1877 930A      ST	R16,-Y
    1878 0181      MOVW	R16,R2
    1879 0192      MOVW	R18,R4
    187A 940E 1C20 CALL	fpdiv2
    187C 940E 1FF2 CALL	_sinf
    187E 0118      MOVW	R2,R16
    187F 0129      MOVW	R4,R18
    1880 018B      MOVW	R16,R22
    1881 940E 1BF9 CALL	int2fp
    1883 925A      ST	R5,-Y
    1884 924A      ST	R4,-Y
    1885 923A      ST	R3,-Y
    1886 922A      ST	R2,-Y
    1887 940E 1DFB CALL	fpmule2
    1889 940E 201D CALL	_froundf
    188B 0118      MOVW	R2,R16
    188C 0129      MOVW	R4,R18
    188D 0187      MOVW	R16,R14
    188E 940E 1BF9 CALL	int2fp
    1890 925A      ST	R5,-Y
    1891 924A      ST	R4,-Y
    1892 923A      ST	R3,-Y
    1893 922A      ST	R2,-Y
    1894 940E 1B8F CALL	fpadd2
    1896 940E 1BCB CALL	fpint
    1898 0178      MOVW	R14,R16
(0311)   ty = y - fround(outer_radius * cos(degree * 3.14 / 180));
    1899 E900      LDI	R16,0x90
    189A E010      LDI	R17,0
    189B 940E 1AAA CALL	elpm32
    189D 0118      MOVW	R2,R16
    189E 0129      MOVW	R4,R18
    189F 018A      MOVW	R16,R20
    18A0 940E 1BF9 CALL	int2fp
    18A2 933A      ST	R19,-Y
    18A3 932A      ST	R18,-Y
    18A4 931A      ST	R17,-Y
    18A5 930A      ST	R16,-Y
    18A6 0181      MOVW	R16,R2
    18A7 0192      MOVW	R18,R4
    18A8 940E 1DFB CALL	fpmule2
    18AA 0118      MOVW	R2,R16
    18AB 0129      MOVW	R4,R18
    18AC E80C      LDI	R16,0x8C
    18AD E010      LDI	R17,0
    18AE 940E 1AAA CALL	elpm32
    18B0 933A      ST	R19,-Y
    18B1 932A      ST	R18,-Y
    18B2 931A      ST	R17,-Y
    18B3 930A      ST	R16,-Y
    18B4 0181      MOVW	R16,R2
    18B5 0192      MOVW	R18,R4
    18B6 940E 1C20 CALL	fpdiv2
    18B8 940E 1E2A CALL	_cosf
    18BA 0118      MOVW	R2,R16
    18BB 0129      MOVW	R4,R18
    18BC 018B      MOVW	R16,R22
    18BD 940E 1BF9 CALL	int2fp
    18BF 925A      ST	R5,-Y
    18C0 924A      ST	R4,-Y
    18C1 923A      ST	R3,-Y
    18C2 922A      ST	R2,-Y
    18C3 940E 1DFB CALL	fpmule2
    18C5 940E 201D CALL	_froundf
    18C7 0118      MOVW	R2,R16
    18C8 0129      MOVW	R4,R18
    18C9 850F      LDD	R16,Y+15
    18CA 8918      LDD	R17,Y+16
    18CB 940E 1BF9 CALL	int2fp
    18CD 925A      ST	R5,-Y
    18CE 924A      ST	R4,-Y
    18CF 923A      ST	R3,-Y
    18D0 922A      ST	R2,-Y
    18D1 940E 1BB2 CALL	fpsub2
    18D3 940E 1BCB CALL	fpint
    18D5 01A8      MOVW	R20,R16
(0312)   lcd_line(fx,fy,tx,ty,show);
    18D6 880F      LDD	R0,Y+23
    18D7 820C      STD	Y+4,R0
    18D8 835B      STD	Y+3,R21
    18D9 834A      STD	Y+2,R20
    18DA 82F9      STD	Y+1,R15
    18DB 82E8      STD	Y+0,R14
    18DC 0196      MOVW	R18,R12
    18DD 0185      MOVW	R16,R10
    18DE D093      RCALL	_lcd_line
    18DF 9625      ADIW	R28,5
    18E0 940E 1ACE CALL	pop_xgsetF0FC
    18E2 9622      ADIW	R28,2
    18E3 9508      RET
_lcd_circle:
  p                    --> R12
  yc                   --> R22
  xc                   --> R20
  show                 --> R10
  radius               --> R12
  y                    --> Y,+13
  x                    --> Y,+11
    18E4 940E 1A64 CALL	push_arg4
    18E6 940E 1AD9 CALL	push_xgsetF0FC
    18E8 9721      SBIW	R28,1
    18E9 84CF      LDD	R12,Y+15
    18EA 88D8      LDD	R13,Y+16
    18EB 88A9      LDD	R10,Y+17
(0313) }
(0314) 
(0315) 
(0316) /***********************************************************************
(0317) Draws a circle with center at x,y with given radius.
(0318) Set show to 1 to draw pixel, set to 0 to hide pixel.
(0319) ***********************************************************************/
(0320) void lcd_circle(int x, int y, int radius, unsigned char show)
(0321) {
(0322)   int xc = 0;
    18EC 2744      CLR	R20
    18ED 2755      CLR	R21
(0323)   int yc = radius;
    18EE 01B6      MOVW	R22,R12
(0324)   int p = 3 - (radius<<1);
    18EF 0116      MOVW	R2,R12
    18F0 0C22      LSL	R2
    18F1 1C33      ROL	R3
    18F2 E083      LDI	R24,3
    18F3 E090      LDI	R25,0
    18F4 016C      MOVW	R12,R24
    18F5 18C2      SUB	R12,R2
    18F6 08D3      SBC	R13,R3
    18F7 C071      RJMP	0x1969
(0325)   while (xc <= yc)  
(0326)   {
(0327)     lcd_pixel(x + xc, y + yc, show);
    18F8 82A8      STD	Y+0,R10
    18F9 852D      LDD	R18,Y+13
    18FA 853E      LDD	R19,Y+14
    18FB 0F26      ADD	R18,R22
    18FC 1F37      ADC	R19,R23
    18FD 850B      LDD	R16,Y+11
    18FE 851C      LDD	R17,Y+12
    18FF 0F04      ADD	R16,R20
    1900 1F15      ADC	R17,R21
    1901 DE37      RCALL	_lcd_pixel
(0328)     lcd_pixel(x + xc, y - yc, show);
    1902 82A8      STD	Y+0,R10
    1903 852D      LDD	R18,Y+13
    1904 853E      LDD	R19,Y+14
    1905 1B26      SUB	R18,R22
    1906 0B37      SBC	R19,R23
    1907 850B      LDD	R16,Y+11
    1908 851C      LDD	R17,Y+12
    1909 0F04      ADD	R16,R20
    190A 1F15      ADC	R17,R21
    190B DE2D      RCALL	_lcd_pixel
(0329)     lcd_pixel(x - xc, y + yc, show);
    190C 82A8      STD	Y+0,R10
    190D 852D      LDD	R18,Y+13
    190E 853E      LDD	R19,Y+14
    190F 0F26      ADD	R18,R22
    1910 1F37      ADC	R19,R23
    1911 850B      LDD	R16,Y+11
    1912 851C      LDD	R17,Y+12
    1913 1B04      SUB	R16,R20
    1914 0B15      SBC	R17,R21
    1915 DE23      RCALL	_lcd_pixel
(0330)     lcd_pixel(x - xc, y - yc, show);
    1916 82A8      STD	Y+0,R10
    1917 852D      LDD	R18,Y+13
    1918 853E      LDD	R19,Y+14
    1919 1B26      SUB	R18,R22
    191A 0B37      SBC	R19,R23
    191B 850B      LDD	R16,Y+11
    191C 851C      LDD	R17,Y+12
    191D 1B04      SUB	R16,R20
    191E 0B15      SBC	R17,R21
    191F DE19      RCALL	_lcd_pixel
(0331)     lcd_pixel(x + yc, y + xc, show);
    1920 82A8      STD	Y+0,R10
    1921 852D      LDD	R18,Y+13
    1922 853E      LDD	R19,Y+14
    1923 0F24      ADD	R18,R20
    1924 1F35      ADC	R19,R21
    1925 850B      LDD	R16,Y+11
    1926 851C      LDD	R17,Y+12
    1927 0F06      ADD	R16,R22
    1928 1F17      ADC	R17,R23
    1929 DE0F      RCALL	_lcd_pixel
(0332)     lcd_pixel(x + yc, y - xc, show);
    192A 82A8      STD	Y+0,R10
    192B 852D      LDD	R18,Y+13
    192C 853E      LDD	R19,Y+14
    192D 1B24      SUB	R18,R20
    192E 0B35      SBC	R19,R21
    192F 850B      LDD	R16,Y+11
    1930 851C      LDD	R17,Y+12
    1931 0F06      ADD	R16,R22
    1932 1F17      ADC	R17,R23
    1933 DE05      RCALL	_lcd_pixel
(0333)     lcd_pixel(x - yc, y + xc, show);
    1934 82A8      STD	Y+0,R10
    1935 852D      LDD	R18,Y+13
    1936 853E      LDD	R19,Y+14
    1937 0F24      ADD	R18,R20
    1938 1F35      ADC	R19,R21
    1939 850B      LDD	R16,Y+11
    193A 851C      LDD	R17,Y+12
    193B 1B06      SUB	R16,R22
    193C 0B17      SBC	R17,R23
    193D DDFB      RCALL	_lcd_pixel
(0334)     lcd_pixel(x - yc, y - xc, show);
    193E 82A8      STD	Y+0,R10
    193F 852D      LDD	R18,Y+13
    1940 853E      LDD	R19,Y+14
    1941 1B24      SUB	R18,R20
    1942 0B35      SBC	R19,R21
    1943 850B      LDD	R16,Y+11
    1944 851C      LDD	R17,Y+12
    1945 1B06      SUB	R16,R22
    1946 0B17      SBC	R17,R23
    1947 DDF1      RCALL	_lcd_pixel
(0335)     if (p < 0)
    1948 01C6      MOVW	R24,R12
    1949 3080      CPI	R24,0
    194A E0E0      LDI	R30,0
    194B 079E      CPC	R25,R30
    194C F464      BGE	0x1959
(0336)       p += (xc++ << 2) + 6;
    194D 011A      MOVW	R2,R20

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -